【问题标题】:Java GUI repaint() problem?Java GUI repaint() 问题?
【发布时间】: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,因为验证会做。

标签: java user-interface refresh jpanel repaint


【解决方案1】:

Container.add API 文档说:

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

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

【讨论】:

  • 另外,请确保对 UI 的更改是在事件调度线程中完成的。
猜你喜欢
  • 2014-08-14
  • 2011-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多