Swing Frame setSize

时间:2014-10-23 18:33:31

标签: java swing jframe

我在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();
    }

}

3 个答案:

答案 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()方法添加首选大小