繁体   English   中英

如何在JComponent.revalidate和Container.validate之间选择

[英]how do I choose between JComponent.revalidate and Container.validate

我正在使用WindowBuilder和Swing。 我在Swing JPanel上执行以下操作:

java.awt.Container.setLayout()
java.awt.Container.removeAll()
java.awt.Container.add()

最后,我调用:

java.awt.Container.validate()但我注意到javax.swing.JComponent.revalidate()在实践中似乎做同样的事情。 我没有观察到任何行为上的差异。 JPanel继承自Container和JComponent。 我该如何选择呢?

3个重要区别:

  • JComponent#revalidate()首先使Container#validate()不执行的组件无效。
  • JComponent#revalidate()不会立即进行验证,它会将组件添加到无效组件列表中,并且RepaintManager将批量验证组件。 当需要大量验证时,这可以提高性能。
  • 可以从任何线程调用JComponent#revalidate() ,而不仅仅是事件分发线程。

除非您需要立即生效(仅在特殊情况下才需要),否则最好使用JComponent#revalidate()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM