Java 摆架调整尺寸

Java 摆架调整尺寸,java,swing,jframe,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(); p

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

}
替换:

frame.setSize(500, 500);

这是因为pack()调整框架的大小以适应其内容的尺寸或首选大小,因此您可以删除pack()调用,或使用setPreferredSize()方法添加首选大小

摆架调整尺寸

正确的答案是不要那样做

即使我们知道帧的内容的大小必须是(例如)500x500 px,我们也不应该猜测帧的大小,因为帧的大小会因平台而异

pack()
知道框架有多大。我们没有,所以我们应该使用它

  • 可以使用字体大小和列数指定文本字段的大小
  • inputPanel
    的正确大小可以根据其中的内容确定

我觉得这是对错误问题的正确答案,但对于“因此您可以删除pack()调用,或使用setPreferredSize()方法添加首选大小”必须为-1,这两者都是错误的做法。
frame.setPreferredSize(new java.awt.Dimension(500, 500));