我有一個小的java桌面應用程序,需要能夠分別點擊「+」和「 - 」按鈕來動態添加和刪除字段。我已經通過調用revalidate(),然後在所有父容器上重繪repaint(),直到ActionListener中的JFrame。Java Swing revalidate()和repaint()問題
這似乎已經成功了,但偶爾它不起作用,並且JPanel不能正確調整大小。這種情況很少發生,看似隨意,並且讓我相信這可能是一個併發問題。我已經嘗試從事件派發線程啓動父容器,但是這並沒有解決問題。
這實際上是一個併發問題還是我吠叫錯誤的樹?任何人都知道發生了什麼以及如何解決?
非常感謝
-SwingNoob
@john,a ['LayoutManager'](http://download.oracle.com/javase/tutorial/uiswing/layout/using.html)負責其組件。據說,當從容器中添加/刪除組件時,絕對沒有理由調用repaint()或revalidate()。 – mre
間歇性錯誤通常會提示併發性問題,但我不認爲任何人都能夠根據所提供的信息爲您提供可靠的答案。 –
@mre:請澄清你的評論,因爲根據我的經驗和閱讀,當添加組件時,需要在Container上調用'revalidate'和'repaint'來移除項目和'revalidate',有時需要'repaint'。 –