如何在JFrame中添加时间延迟?

时间:2013-06-11 10:58:04

标签: java swing jframe

我正在JFrame建立一个聊天室。 我希望JFrame刷新每个 200ms ,以便每当输入新文本时,它都会显示在JFrame内。

我尝试使用while(true),但JFrame冻结。

如何在代码中添加计时器?

2 个答案:

答案 0 :(得分:3)

  

我正在JFrame中建立一个聊天室。我希望JFrame刷新每个   200毫秒,这样无论何时输入新文本,它都会出现在里面   JFrame。

     

我尝试使用while(true)但JFrame冻结。

     

如何在代码中添加计时器?

  • 不同意,JFrame不能只刷新JComponentJTextComponent),并且仅在第二方面有一些更改

  • 200milisecond时间很短,你不能在这么短的时间内写短信,我要设置750milis - one second

  • 使用util.Timer或从Runnable#Thread启动无限循环,

  • 使用布尔局部变量而不是while(true),例如while(canRun),然后可以在需要时停止并启动循环

  • 来自Swing GUI / util.Timer的{​​{1}}的所有输出必须包含在Runnable#Thread中,只有真正更改的方法,来自invokeLater的方法例如Swing APIssetText()不是整个方法,无法负责创建输出,连接等。

  • 不要使用append(),不是无限循环的正确API,被指定只运行一次,

  • 然后可能会有一些SwingWorker(从任何SwingWorkersTimer调用)的实例,因为没有人可以保证每一个都结束而不是(一些实例)同时存在,然后从Executor

  • 调用最佳选择

答案 1 :(得分:1)

您也可以尝试使用计时器类

Timer timer = new Timer(2000, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//Some code here

}
});
timer.start();

有关详细信息,请参阅How to Use Swing Timers

希望这会对你有所帮助。