1

我正在建立一个聊天室JFrame。我希望每200 毫秒JFrame刷新一次,这样每当输入新文本时,它就会出现在.JFrame

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

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

4

2 回答 2

3

我正在 JFrame 中建立一个聊天室。我希望 JFrame 每 200 毫秒刷新一次,这样每当输入新文本时,它就会出现在 JFrame 内。

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

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

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

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

  • 使用util.Timeror 开始无限循环Runnable#Thread

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

  • Swing GUI到from util.Timer/的所有输出都Runnable#Thread必须包装到invokeLater,只有具有实际更改的方法,方法 fromSwing APIs例如setText()append()而不是整个方法, void 负责创建输出,连接等。

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

  • 那么SwingWorkers(从任何Timer或调用Executor)的几个实例可能存在并发,因为没有人可以保证每个结束和不是(几个实例)同时存在,然后从循环调用最佳选择Runnable#Thread

于 2013-06-11T11:45:30.537 回答
1

您也可以尝试计时器课程

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

}
});
timer.start();

有关更多详细信息,请参阅如何使用摆动计时器

希望这会帮助你。

于 2013-06-11T11:51:46.173 回答