JFrame不提供任何组件

我使用以下代码创建一个非常简单的JFrame ,但由于某种原因它不显示任何组件,只是一个空白框架。 为什么会这样? 我创建了很多次框架,我无法弄清楚出了什么问题。 代码是:

 Main(){ JFrame frame = new JFrame("Colorizer | By: NonameSL"); frame.setSize(400,200); frame.setLocationRelativeTo(null); frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel panel = new JPanel(); frame.setContentPane(panel); textField=new JTextField("Enter your name!"); textField.setBounds(0,0,40,200); textField.setVisible(true); frame.getContentPane().add(textField); button=new JButton("Go!"); button.setBounds(0, 200, 40, 200); button.setVisible(true); frame.getContentPane().add(button); rectangle=new RecShape(Color.WHITE); rectangle.setBounds(0,40,400,160); rectangle.setVisible(false); frame.getContentPane().add(rectangle); Main.frame=frame; registerButton(); } 

RecShape类是我创建的一个类,它只是在屏幕上创建一个矩形形状。 哪里不对?

frame.setVisible(true); 将组件添加到 JFrame ,它将显示所有添加的组件。 此外,您应该使用特定的布局而不是为组件设置边界。 您可以使用布局管理器 。

你必须移动frame.setVisible(true); 到方法的最后; 添加组件后,可见性必须设置为true。

或者,您可以将以下内容添加到方法的末尾:

 frame.revalidate(); frame.repaint(); 

使用新添加的组件重新validation和重新绘制框架,尽管我推荐使用前一种方法。

你可以在最后加上这个;

 frame.pack() 

最好先将组件添加到变量“panel”中,然后将完成的面板添加到.getContentPane().add()

而最重要的问题是你最好调用frame.setVisible(true); 在你的方法的最后。