Java GUI repaint()问题?

时间:2008-12-15 21:52:23

标签: java user-interface refresh jpanel repaint

我有一个JFrame。这个JFrame包含一个JButton。我单击JButton并创建了10个JTextField。

问题: 直到“我通过调整窗口大小强制重绘()”,我才能看到它们。只有这样我才能看到创建的JTextField。

CODE:

JPanel points = new JPanel();

//Creating the JTextFields:
for (int i=0; i<10; i++) {
    JTextField textField = new JTextField();
    points.add(textField);
}

repaint();
this.repaint();
super.repaint();
points.repaint();

谢谢 - 在for循环之后,我只调用了points.validate()并且它有效...

1 个答案:

答案 0 :(得分:15)

Container.add API文档说:

  

注意:如果已添加组件   一个已经显示的容器,   必须调用validate   容器显示新的   零件。如果是多个组件   被添加,你可以改善   通过仅调用验证来提高效率   一旦完成所有组件之后   已被添加。

这是模糊的,不是很聪明,但这是规则。最好拨打JComponent.revalidate