我对 Swing 很陌生。
我有
itemActionButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg) {
itemAction();
}
});
但是当单击按钮时,我希望父表单的线程等到该操作完成后再刷新,而不是在另一个线程上运行此操作,从而允许额外的点击等。
我怎样才能做到这一点?
我对 Swing 很陌生。
我有
itemActionButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg) {
itemAction();
}
});
但是当单击按钮时,我希望父表单的线程等到该操作完成后再刷新,而不是在另一个线程上运行此操作,从而允许额外的点击等。
我怎样才能做到这一点?
ActionListener 中的代码在 EDT 上执行,从而防止 GUI 重新绘制和响应其他事件。
如果您有一个长时间运行的任务并且您不想阻塞 EDT,那么您需要使用另一个线程。
阅读有关并发的 Swing 教程部分,了解更多信息和使用 SwingWorker 的解决方案。