我做了400 400帧,并添加了一个文本字段。默认情况下,java应用程序仅缩小到文本字段的大小。我希望它固定到相应的大小。如何保持JFrame的特定宽度和高度?
我试过setResizable(false)
,setExtendedState()
,setBounds()
无济于事。
我做了400 400帧,并添加了一个文本字段。默认情况下,java应用程序仅缩小到文本字段的大小。我希望它固定到相应的大小。如何保持JFrame的特定宽度和高度?
我试过setResizable(false)
,setExtendedState()
,setBounds()
无济于事。
尝试
setPreferredSize(new Dimension(840,400));
如果你命名你的框架,你可以做
name.setPreferredSize(new Dimension(840,400));
它应该在内容窗格上完成。 – 2013-04-25 16:04:24
非常感谢。 setSize()不起作用,但setPreferredSize()做了。 – mireazma 2013-04-25 16:09:32
@ user2320553不推荐使用setPreferredSize()。 – 2013-04-25 17:07:57
最好用一个JPanel作为你的contentPane或将其添加到contentPane,并覆盖其getPreferredSize() method and then use
包() `在JFrame上。例如:
import java.awt.Dimension;
import javax.swing.*;
@SuppressWarnings("serial")
public class MyPanel extends JPanel {
private static final int PREF_W = 400;
private static final int PREF_H = 300;
public MyPanel() {
//...
}
@Override
public Dimension getPreferredSize() {
return new Dimension(PREF_W, PREF_H);
}
private static void createAndShowGui() {
MyPanel myPanel = new MyPanel();
JFrame frame = new JFrame("My GUI");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(myPanel);
frame.setResizable(false);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGui();
}
});
}
}
一个优势的,这是其它类无法通过setSize(...)
或setPreferredSize(...)
改变MyPanel的大小。
你确定你没有在某处调用'pack()'吗? – 2013-04-25 16:03:20
我在所有其他人之后添加了pack()行。为什么? – mireazma 2013-04-25 16:11:07
调用'pack()'验证整个帧组件层次结构,并将帧的大小设置为由包含组件计算出的首选大小。遵循HFOE解决方案或不要致电包 – 2013-04-25 16:18:10