【发布时间】:2013-03-28 14:14:44
【问题描述】:
我对 Swing 很陌生。
我有
itemActionButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg) {
itemAction();
}
});
但是当点击按钮时,我希望父表单的线程等到操作完成后再刷新,而不是在另一个线程上运行此操作,允许额外的点击等。
我该怎么做?
【问题讨论】:
-
我以为你是。从 actionPerformed 内部运行操作将继续阻止 EDT。您可以禁用 e 按钮(单击时),在 SwingWorker 中运行操作并从 SwingWorker 的 done 方法中租用按钮
-
Paul 你能在这里看到吗:stackoverflow.com/questions/8083768/…
-
如前所述,我在这里运行在主线程中。事实证明,我是从其他地方的 TimerTask 间接调用
itemAction()。为了让itemAction()在主线程上运行,我必须使用SwingUtilities.invokeLater()。
标签: java swing user-interface synchronous