【发布时间】:2016-07-14 05:07:54
【问题描述】:
我在创建的 JButton 中添加了一个动作,以下是我的代码
private void myButtonActionPerformed(java.awt.event.ActionEvent evt) {
txtResult.setText("");
myButton.setText("Working ...");
myButton.setEnabled(false);
myButton.repaint();
System.out.println("Doing Action ...");
SwingUtilities.invokeLater(new Runnable() {
public void run() { // some code inside that is memory intensive
}
});
segmentButton.setText("Original Text");
segmentButton.setEnabled(true);
}
虽然我可以看到系统,但我的组件根本没有更新,而且我无法更新 JFrame 上的任何其他组件,就好像整个线程被阻塞了一样
【问题讨论】:
-
...as if the whole thread is blocked是。 Swing 是单线程的——使用 SwingUtilities 在 EDT 上放置一些密集的代码会阻止 Swing 更新。使用单独的线程或 SwingWorker -
谢谢@copeg!我根据您的建议添加了一个答案并提到了您