如何在显示文本时在 JTextArea 内添加延迟?

How to add delay inside a JTextArea in displaying text?

我想在 textArea 中添加显示文本的延迟。我使用 Thread.sleep 方法,但它无法正常工作。

for(int i=0; i<3; i++) {
    textArea.append(" .");
    Thread.sleep(2000);
}

这部分代码在一个按钮的actionListner里面。当按下按钮时,textArea 内会显示一个点 (.),每个点延迟 2 秒,但循环无法正常工作。当我 运行 代码时,程序首先等待 6 秒,然后整个输出立即显示在 textArea 中。

但是,如果我在 GUI 以外的简单 java class 中使用这部分代码,那么它完全可以正常工作。

请帮我看看我该怎么做?

您可以使用定时器,您所要做的就是:

1) 导入

import javax.swing.Timer;

2) 用自己的Action Listener初始化

private int i = 0;
private Timer tmr = new Timer(2000, new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        textArea.append(" .");
        ++i;
        if(i >= 2)
           tmr.stop();
    }
});

3) 开始计时:

tmr.start();

这应该有效。 如果有任何问题,请告诉我。