我添加了一个动作监听我的按钮:如何更新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'并且像事件派发线程中的所有其他事件一样被调度。 –