JComponents 仅在调整大小后出现

JComponents only appear after resizing

我遇到了我很确定是一个小故障,但还没有找到任何解决方法。目前,我只有一个简单的 window,它有一个文本字段和一个标签。当我第一次运行这个程序的时候,出现的是一个空的window,当我调整window的大小时,通过最大化或者只是手动调整一点点,组件出现了,这是怎么回事在吗?

public class Calculator {

    public static void main(String[] args) {

        JFrame mainFrame = new JFrame("Calculator");
        mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        mainFrame.setSize(300,400);
        mainFrame.setLocationRelativeTo(null);
        mainFrame.setVisible(true);

        JPanel mainPanel = new JPanel();
        mainFrame.add(mainPanel);

        JTextField mainField = new JTextField(20);
        mainPanel.add(mainField);

        JLabel mainLabel = new JLabel("Orange");
        mainPanel.add(mainLabel);

    }

}

默认情况下,所有组件的大小都是(0, 0),所以没有什么可绘制的。

需要在 setVisible() 方法之前将组件添加到框架中。然后当框架可见时调用布局管理器并为组件提供 size/location.

您在调用 setVisible(true) 后向框架添加组件。 这个问题已经有人问过了。

Java items appear only after the window is resize