Java Swing revalidate() 和 repaint() 问题

标签 java swing

我有一个小型 Java 桌面应用程序,需要能够通过分别单击“+”和“-”按钮来动态添加和删除字段。我已经通过调用 revalidate() 然后在所有父容器上调用 repaint() 一直到 ActionListener 中的 JFrame 来实现它。

这似乎成功了,但有时它不起作用并且 JPanel 无法正确调整大小。这种情况很少发生,而且似乎是随机发生的,让我相信这可能是一个并发问题。我已经尝试从事件分派(dispatch)线程启动父容器,但这并没有解决问题。

这实际上是一个并发问题还是我找错了树?任何人都知道发生了什么以及如何解决它?

非常感谢

-SwingNoob

最佳答案

这不是对 OP 问题 nice example 的回答, OP 的问题可能与 LayoutManager 和 OP 代码中的未知内容有关

1/如果你添加一个新的 JComponent 到 Container 那么你必须调用

validate();
repaint(); //lay with LayoutManager required that 

2/如果从容器中删除然后添加一个 JComponents,那么您必须调用

revalidate();
repaint(); // lay with LayoutManager required that 

3/看起来 revalidate 也覆盖了 validate,

关于Java Swing revalidate() 和 repaint() 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6405383/

相关文章:

java - 我收到一个没有提取数据的空 html/jsp 表

java - 如何从自定义JButton拦截paintComponent

java - 多次调用paintComponent且组件重叠

java - 我应该在我的应用程序中声明 swing 组件为最终的吗?

Swing:将一组组件放置在框架中

java - 在android中显示通知方法更改?

java - 检查java中字符串是否只有一个回文字符不匹配

java - 无法解析 RadioButton - 如何初始化按钮?

java - 在 MVEL 中格式化 orb 标签

java - 文件存在,但在 toast 中它是空的