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

标签 java swing jframe

我正在 JFrame 中构建聊天室。 我希望 JFrame200ms 刷新一次,这样每当输入新文本时,它就会出现在 JFrame 中。

我尝试使用 while(true)JFrame 卡住了。

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

最佳答案

I am building a chat room in JFrame. I want the JFrame to refresh each 200ms so that whenever a new text is entered, it will appear inside the JFrame.

I tried using while(true) but JFrame freezes.

How to add timer to the code?

  • 不同意,JFrame不能只刷新JComponent(JTextComponent),只有在第二面是一些变化

  • 200milisecond 时间很短,这么短的时间不能写短信,我会设置750milis - 一秒

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

  • 使用 boolean 局部变量而不是 while(true),例如 while(canRun),这样循环就可以在需要时停止和启动

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

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

  • 然后可能会与 SwingWorkers 的几个实例并发(从任何 TimerExecutor 调用),因为没有人可以为了保证每个结束的和不结束的(少数情况)同时存在,那么最好的选择是从 Runnable#Thread

  • 调用循环

关于java - 如何在 JFrame 中添加时间延迟?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17042458/

相关文章:

java - 通配类型的协变和逆变

java - 如何在类型为2015-01-13T10 :24:55Z的java中使用SimpleDateFormat解析日期

Java Swing——将 JPanel 的按键输入添加到 JOptionpane

java - 你在Java中什么时候用Frame或JFrame?

java - 如何使 JFrame 类成为我的主类?

java - 如何终止包装函数的线程? [复制]

java - AspectJ @DeclareMixin,未由接口(interface)声明的方法不会被编织

java - 将 Xml 文件导入 java 应用程序

java - 为什么使用 ActionListener 会破坏我的 Swing Applet?

java - 初始化多个 JFrame 会创建空白 JFrame