繁体   English   中英

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

[英]How to add a time delay in JFrame?

我正在JFrame建立一个聊天室。 我希望JFrame200ms刷新一次,这样无论何时输入新文本,它都会出现在JFrame

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

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

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

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

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

  • 不同意, JFrame不能只刷新JComponentJTextComponent )而且只在第二面有一些变化的情况下

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

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

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

  • 所有从util.Timer / Runnable#Thread输出到Swing GUI Runnable#Thread必须包装到invokeLater ,只有真正改变的方法,来自Swing APIs方法,例如setText()append()不是整个方法,void负责创建输出,连接等

  • 不要使用SwingWorker ,不适合无限循环的API,被指定只运行一次,

  • 然后可能有一些SwingWorkers实例(从任何TimerExecutor调用)的SwingWorkers ,因为没有人可以保证每个结束但不是(几个实例)同时存在,那么最好的选择是循环调用来自Runnable#Thread

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

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

}
});
timer.start();

有关更多详细信息,请参阅如何使用Swing Timers

希望这会帮助你。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM