如何防止在 Java 中调整面板大小

How to prevent resizing of a panel in Java

我已经应用了surface.setResizable (false)方法; 如何对面板做同样的事情?我一直是这样的:

stage.setMinWidth (w);
stage.setMinHeight (h);
stage.setWidth (w);
stage.setHeight (h);
stage.setMaxWidth (w);
stage.setMaxHeight (h);

pane.setMaxSize (700, 420);
pane.setPrefSize (700, 420);
pane.setMinSize (700, 420);

还有一个小问题!如何让标题居中?

surface.setTitle ("HELLO WORLD");

你会试试这个属性吗?

    frame.setResizable(false);
    frame.pack();
    frame.setVisible(true);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

确保你总是在调用 pack 之前调用 setResizable

使 GLWindow 处理中的 P3D 渲染器可调整大小可能存在问题。从所提供的少量信息来看,似乎根本不需要使用 P3D 。使用默认 (JAVA2D) 渲染器,window 将无法调整大小:这是默认值。

关于这个小问题我也有一个小问题:为什么? :)

就可用性而言,理想情况下您希望您的应用保持一致。

一种使文本居中的方法,如果您真的非常想要的话,是在“HELLO WORLD”之前添加一些空格。您将需要根据系统字体(每个 OS 和用户偏好可能不同)来锻炼移动字符串的像素数,如果它是等宽字体(在大多数情况下它不是'吨)。很多事情需要考虑,如果你想把它钉在像素上,很多事情可能会出错,那么所有这些努力会带来什么好处?

不管怎样,这是一个测试草图:

void setup(){
  size(300,300, JAVA2D);
  background(0,192,0);
  // don't need this with JAVA 2D: it's the default
  //surface.setResizable(false);
  
  String title = "Hello World";
  // estimated char width: assumes font is monospaced (Arial/Verdana it isn't)
  int charWidth = 6;
  // calculate left margin
  int leftMargin = (width - (title.length() * charWidth)) / 2;
  // calculate the number of chars to prepent
  int chars = leftMargin / charWidth;
  // prepend spaces to move text to the right
  for(int i = 0 ; i < chars; i++){
    title = " " + title;
  }
  
  surface.setTitle(title); 
}

您甚至可以根据需要对其进行动画处理:

void draw(){
  String title = "->";
  for(int i = 0 ; i < (int)map(sin(frameCount * 0.1), -1, 1, 0, 21); i++){
    title = "-" + title;
  }
  surface.setTitle(title);
}

真的值得付出努力并浪费 CPU 个周期吗?可能不是:)