如何在显示文本时在 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();
这应该有效。
如果有任何问题,请告诉我。
我想在 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();
这应该有效。 如果有任何问题,请告诉我。