在run()中不能将摆动组件放到框架上?

时间:2014-10-30 06:51:12

标签: java swing

public Test() {
    EventQueue.invokeLater(new Runnable()
    {
        JFrame frame = new JFrame("Test Frame");
        JButton button = new JButton("Button");

        frame.add(button);

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLayout(new BorderLayout());

        frame.setSize(600,600);
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }
}

此代码不会显示按钮,只显示框架。另外,我测试了run方法之外的确切代码,它工作正常。我可以不在run方法中显示按钮或其他组件吗?如果是这样,为什么不呢?也许我对EventQueue的理解是关闭的。

1 个答案:

答案 0 :(得分:2)

我不确定BorderLayout在容器上已存在组件时喜欢它...

由于BorderLayoutJFrame的默认布局管理器,因此只需删除setLayout来电...

frame.add(button);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//frame.setLayout(new BorderLayout());

将来可以先设置布局管理器;)