4
在我的Swing應用程序,當我從我的主要成分去除JOGLGLCanvas中在同一添加的JPanel地方,有一些顯示故障: 在舊組件已被刪除並添加新組件之前,在之前顯示的所有彈出式菜單的剩餘圖像都在GLCanvas上可見主要組件的背景。的Java Swing:剩磁消除重量級JOGL組件在同一位置添加一個輕量級組件時
我該如何避免這種情況?
在我的Swing應用程序,當我從我的主要成分去除JOGLGLCanvas中在同一添加的JPanel地方,有一些顯示故障: 在舊組件已被刪除並添加新組件之前,在之前顯示的所有彈出式菜單的剩餘圖像都在GLCanvas上可見主要組件的背景。的Java Swing:剩磁消除重量級JOGL組件在同一位置添加一個輕量級組件時
我該如何避免這種情況?
當添加/從可見的GUI移除組件的代碼應該是這樣的:
panel.remove(...);
panel.add(...);
panel.revalidate();
panel.repaint();
此外,代碼應該在事件指派線程執行。如果代碼從監聽器中執行,那麼它在EDT上。如果代碼在偵聽器之外執行,那麼您可能需要使用SwingWorker或SwingUtilities.invokeLater()。
我認爲重新驗證自己組織必要的重繪,所以你不必這樣調用它。不過,更重要的部分是美國東部時間。 – 2011-02-23 18:55:41
有時候重新繪製絕對是必不可少的,尤其是在刪除組件時,所以重新驗證是很多次不夠的。 – 2011-02-23 19:03:33
對不起,我的問題還沒有足夠明確......我知道在EDT中需要這麼做......只有在重量級慢動作組件與輕量級揮杆組件混合時,這還不夠。我編輯我的問題更具體。 – jumar 2011-02-25 14:19:38