簡體   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