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的理解是关闭的。
答案 0 :(得分:2)
我不确定BorderLayout
在容器上已存在组件时喜欢它...
由于BorderLayout
是JFrame
的默认布局管理器,因此只需删除setLayout
来电...
frame.add(button);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//frame.setLayout(new BorderLayout());
将来可以先设置布局管理器;)