我正在JFrame
建立一个聊天室。
我希望JFrame
刷新每个 200ms ,以便每当输入新文本时,它都会显示在JFrame
内。
我尝试使用while(true)
,但JFrame
冻结。
如何在代码中添加计时器?
答案 0 :(得分:3)
我正在JFrame中建立一个聊天室。我希望JFrame刷新每个 200毫秒,这样无论何时输入新文本,它都会出现在里面 JFrame。
我尝试使用while(true)但JFrame冻结。
如何在代码中添加计时器?
不同意,JFrame
不能只刷新JComponent
(JTextComponent
),并且仅在第二方面有一些更改
200milisecond
时间很短,你不能在这么短的时间内写短信,我要设置750milis - one second
使用util.Timer
或从Runnable#Thread
启动无限循环,
使用布尔局部变量而不是while(true)
,例如while(canRun)
,然后可以在需要时停止并启动循环
来自Swing GUI
/ util.Timer
的{{1}}的所有输出必须包含在Runnable#Thread
中,只有真正更改的方法,来自invokeLater
的方法例如Swing APIs
,setText()
不是整个方法,无法负责创建输出,连接等。
不要使用append()
,不是无限循环的正确API,被指定只运行一次,
然后可能会有一些SwingWorker
(从任何SwingWorkers
或Timer
调用)的实例,因为没有人可以保证每一个都结束而不是(一些实例)同时存在,然后从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
希望这会对你有所帮助。