如何防止在 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 个周期吗?可能不是:)
我已经应用了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 个周期吗?可能不是:)