首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >随时间将文本追加到TextArea (带延迟)

随时间将文本追加到TextArea (带延迟)
EN

Stack Overflow用户
提问于 2013-06-01 10:17:58
回答 2查看 7.5K关注 0票数 2

我有一个TextArea,我希望能够在一段时间内向其追加字符或单词。我尝试使用Thread.sleep(),但很快就意识到这是大错特错。

我猜是在伪代码中

代码语言:javascript
运行
复制
textArea.appendText("hey");
mysteryWaitMethod(500);
textArea.appendText("delayed");
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-01 12:53:03

JavaFX确实内置了一个定时器--它被称为Timeline。它简单明了,提供了额外的功能,比如Swing的Timer类,最重要的是,它在UI线程上执行代码。

我对JavaFX了解不多,但通常您需要修改在UI线程上执行的UI。这就是这个类要做的。我建议通过java.util.Timer使用它(在后台任务中使用它……而不是UI )。当多个线程试图扰乱一个UI时,往往会发生不好的事情(这就是使用这些计时器的原因)。

这篇文章提供了如何使用它的一个很好的例子:https://stackoverflow.com/a/9966213/1515592

票数 3
EN

Stack Overflow用户

发布于 2013-06-01 10:27:47

使用javax.swing.Timer

代码语言:javascript
运行
复制
textArea.appendText("hey");

int delay = 500; //milliseconds
ActionListener taskPerformer = new ActionListener() {
     public void actionPerformed(ActionEvent evt) {
         textArea.appendText("delayed");
     }
 };
 Timer t = new Timer(delay, taskPerformer);
 t.setRepeats(false);
 t.start();

http://docs.oracle.com/javase/6/docs/api/javax/swing/Timer.html

或java.util.Timer

代码语言:javascript
运行
复制
new Timer().schedule(
    new TimerTask() {
        @Override
        public void run() {
            textArea.appendText("delayed");
        }
}, 500);

http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Timer.html

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16868445

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档