我在Swing中创建了一个简单的用户界面,但是setSize命令似乎不起作用。谁能告诉我这是什么问题?
import java.awt.Container;
import javax.swing.*;
public class UserInterface1 {
private JTextField outputArea = new JTextField();
private JTextField errorReportArea = new JTextField();
private JPanel inputPanel = new JPanel();
public UserInterface1() {
JFrame frame = new JFrame("Fuel Station");
frame.setSize(500, 500);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
outputArea.setEditable(false);
errorReportArea.setEditable(false);
Container contentPane = frame.getContentPane();
contentPane.setLayout(new BoxLayout(contentPane, BoxLayout.Y_AXIS));
contentPane.add(outputArea);
contentPane.add(errorReportArea);
contentPane.add(inputPanel);
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
UserInterface1 test = new UserInterface1();
}
}
答案 0 :(得分:4)
Swing Frame setSize
正确答案是不要这样做!
即使我们知道帧的内容的大小必须(例如)500x500像素,我们也不应该猜测帧的大小,这会因平台而异。
pack()
知道制作框架有多大。我们没有,所以我们应该使用它。
inputPanel
的正确尺寸可以根据其中的内容确定。答案 1 :(得分:-1)
替换:
frame.setSize(500, 500);
通过
frame.setPreferredSize(new java.awt.Dimension(500, 500));
答案 2 :(得分:-1)
这是因为pack()调整框架大小以适应其内容的尺寸或首选大小,因此您可以删除pack()调用,或使用setPreferredSize()方法添加首选大小