我添加了一個動作監聽我的按鈕:如何更新actionPerformed()內的JFrame?
myButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
myButtonAction();
}
});
該按鈕將啓動阻塞/賣出看漲。我想在調用發生之前更新JFrame(一些組件) - 通知用戶。但是,對於JFrame,似乎沒有立即着色。我應該怎麼做?
此時任何變化,包括myButton.setEnabled(false)
都不會得到更新,直到後完成。
我應該真的只是創建新的線程(非與用戶界面相關)嗎?這對我來說似乎是一個輕量級的任務。
無論你的任務是快速/快速/輕量級和其他線程是不必要的,要麼它不夠快,你應該將其移動到另一個線程。請記住,您絕對不應該在EDT(Event Dispatching Thread)之外修改UI。 SwingUtilities.invokeLater/invokeAndWait可以爲SwingWorker提供幫助。 –
我想我應該使用一個線程 - 我只是新手知道SwingWorkers,所以應該不斷創建和銷燬線程。我想添加一個問題,但按鈕的actionPerformed在EDT上調用是不是? – christopher
是的,當然是:'ActionEvent'是一個'Event'並且像事件派發線程中的所有其他事件一樣被調度。 –