我想在JTextField中以注释的形式向用户显示程序流。仅显示最后一条消息(“完成”)。呼叫setText()
时如何显示每条消息?
private class CalculateButtonHandler implements ActionListener {
public void actionPerformed(ActionEvent e) {
String keyValue = keywordTF.getText();
currentTF.setText("calling 1");
methodCall1();
currentTF.setText("calling 2");
methodCall2();
currentTF.setText("calling 3");
methodCall3();
currentTF.setText("complete");
}
}
最佳答案
原因是因为您的methodCall*
方法正在EDT上运行,所以EDT没有时间重新绘制文本字段。
如果要显示繁重任务的进度,则应在工作线程上执行繁重的工作,并在EDT上更新UI。通常,这是通过使用SwingWorker
或使用工作线程中的SwingUtilities#invokeLater
来实现的。
'Concurrency in Swing'教程包含更多信息
关于java - 只有对TextField的最后一次调用才能更新它,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10604199/