JLabelを追加するJPanelがあります。次に、すべてのJLabelを削除して、新しいJLabelをいくつか追加します。
だから私は次のことをします:
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からの出力は引き続き表示されます。再検証プロセスは長時間実行されるタスクであるため、再検証が行われ、競合が発生している間にfirstProducerスレッドが開始されることを読みました。これに対処するための最良の方法は何ですか?