我制作了一个840乘400帧并添加了一个文本字段。默认情况下,Java应用程序仅缩小到文本字段的大小。我希望它固定在各自的大小。
我尝试setResizable(false)
,setExtendedState()
,setBounds()
但无济于事。
答案 0 :(得分:4)
最好将JPanel用作contentPane或将其添加到contentPane,并覆盖JFrame上的getPreferredSize() method and then use
pack()`。例如:
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的大小。
答案 1 :(得分:2)
尝试
setPreferredSize(new Dimension(840,400));
如果您为框架命名,则可以
name.setPreferredSize(new Dimension(840,400));