我有我添加JLabel的到一個JPanel。然後我想刪除所有JLabel並添加一些新的JLabel。重新驗證並重新繪製 - 的Java Swing
所以我做到以下幾點:
panel.removeAll();panel.repaint();
panel.add(new JLabel("Add something new");
panel.revalidate();
這工作得很好。
panel.removeAll();panel.repaint();
(1)panel.add(new JLabel("Add something new");
panel.revalidate();
//new thread to start - this thread creates new JLabels that should appear under (1)
firstProducer.start();
try {
firstProducer.join();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
然後從原始的JLabel輸出仍是可見:當我在這之後就像啓動一個新線程我的問題就出現了。我已經讀過,重新驗證過程是一個長時間運行的任務,因此第一個生產者線程正在啓動,而 重新驗證正在進行並且發生衝突。處理這個問題的最佳方法是什麼?
同步問題? –
1)*「我有一個JPanel,我正在添加JLabel的。」*爲什麼?在圖形用戶界面中使用''「'標籤將使它們更易於使用,但是不可見。 2)確保長時間運行的操作離開EDT,GUI更新。爲長時間運行的任務實現'SwingWorker'。有關更多詳細信息,請參見[Swing中的併發](http://docs.oracle.com/javase/tutorial/uiswing/concurrency/)。 –
歡呼的提示 –