我想在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/

10-11 22:35