JComponents仅在调整大小后出现

时间:2017-12-02 16:11:30

标签: java swing visible jcomponent

我遇到了我非常确定的故障,并没有找到任何方法。我目前只有一个简单的窗口,它有一个文本字段和一个标签。当我第一次运行程序时,出现的是一个空窗口,当我调整窗口大小时,通过最大化或只是手动调整一点,组件出现,这里发生了什么?

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);

    }

}

2 个答案:

答案 0 :(得分:0)

默认情况下,所有组件的大小都是(0,0),因此无需绘制任何内容。

需要在setVisible()方法之前将组件添加到框架中。然后,当框架可见时,将调用布局管理器,并为组件指定大小/位置。

答案 1 :(得分:0)

调用setVisible(true)后,您正在向框架添加组件。 这个问题已经被问到了。

Java items appear only after the window is resize