JFrame没有呈现任何组件

时间:2014-06-27 09:09:13

标签: java swing jframe components

我使用以下代码创建一个非常简单的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类是我创建的一个类,它只是在屏幕上创建一个矩形形状。 怎么了?

4 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

您必须将frame.setVisible(true);移至方法的末尾;添加组件后,可见性必须设置为true。

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

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

使用新添加的组件重新验证并重新绘制帧,尽管我推荐使用前一种方法。

答案 2 :(得分:1)

你可以在最后添加;

frame.pack()

答案 3 :(得分:1)

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

最重要的问题是,您最好在方法结束时调用frame.setVisible(true);