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() 问题?的主要内容,如果未能解决你的问题,请参考以下文章