[英]How to add a time delay in JFrame?
我正在JFrame
建立一个聊天室。 我希望JFrame
每200ms刷新一次,这样无论何时输入新文本,它都会出现在JFrame
。
我尝试使用while(true)
但JFrame
冻结。
如何在代码中添加计时器?
我正在JFrame中建立一个聊天室。 我希望JFrame每200ms刷新一次,这样无论何时输入新文本,它都会出现在JFrame中。
我尝试使用while(true)但JFrame冻结。
如何在代码中添加计时器?
不同意, JFrame
不能只刷新JComponent
( JTextComponent
)而且只在第二面有一些变化的情况下
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
实例(从任何Timer
或Executor
调用)的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.