Java GUI repaint() 问题?

Posted

技术标签:

【中文标题】Java GUI repaint() 问题?【英文标题】:Java GUI repaint() problem? 【发布时间】:2010-09-27 01:21:45 【问题描述】:

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

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

代码:

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() 并且它起作用了......

【问题讨论】:

而且你不需要调用repaint,因为验证会做。 【参考方案1】:

Container.add API 文档说:

注意:如果一个组件已经添加到 已显示的容器, 必须调用 validate 显示新的容器 零件。如果有多个组件 正在添加,您可以改进 通过调用 validate only 提高效率 一次,在所有组件都有 已添加。

它晦涩难懂,也不是很聪明,但这是规则。最好拨打JComponent.revalidate

【讨论】:

另外,请确保对 UI 的更改是在事件调度线程中完成的。

以上是关于Java GUI repaint() 问题?的主要内容,如果未能解决你的问题,请参考以下文章

Java JPanel repaint() 问题?

Java中的重绘()

单击后更改形状和颜色(GUI、Java)

Qt 在处理时更新(重绘)文本框

Java - 方法 repaint() 不调用 paintComponent() 方法

Java 中的 repaint() 方法在翻译后不会重新绘制我的 Rectangle