2011-05-25 61 views
1

我有一個java框,其中有各種組件。當用戶執行某個操作時,我想清空該框,在其中放入一組不同的組件,然後將該框表示給用戶。該框是一個JDialog框的一部分。我可以清空這個盒子並重新填充它,但顯示並不反映新的內容。它僅僅是一個空白的顯示(我假設反映了我清空盒子內容的事實)。我在放入新內容後重新繪製盒子,但盒子所在區域的顯示器是空白的。奇怪的是,如果我第一次添加一個線框到框中,然後重新繪製它,框的內容出現在屏幕上。這是最離奇的行爲。任何想法爲什麼會發生這種情況,以及如何解決這個問題?更改內容後刷新框的內容

感謝,

埃利奧特

回答

2

你添加和刪除從EDT內容?如果這是發生在錯誤的線程上可能會導致奇怪的重繪行爲。

可能也想嘗試

dialog.revalidate() 

,如果上面沒有問題的,而不是調用重繪

+0

自一個JDialog應該dialog.validate()。但是,這是訣竅。 – Elliott 2011-05-25 20:38:29

+0

@Elliott:不,重新驗證是正確的,但在將其轉換爲JPanel之後,您會在JDialog的contentPane上調用它。 '((JPanel)dialog.getContentPane()).revalidate();'會做。 1+到meverett。 – 2011-05-25 21:35:40