Java Swing:延迟后更改文本
发布时间:2020-12-15 08:48:34 所属栏目:Java 来源:网络整理
导读:基本上,我有这个游戏,一旦猜到正确答案,它开始一个新单词的新游戏.我想显示正确!但三秒后,将其更改为空字符串.我怎么做? 我的尝试: if (anagram.isCorrect(userInput.getText())) { anagram = new Anagram(); answer.setText("CORRECT!"); word.setText(a
基本上,我有这个游戏,一旦猜到正确答案,它开始一个新单词的新游戏.我想显示正确!但三秒后,将其更改为空字符串.我怎么做?
我的尝试: if (anagram.isCorrect(userInput.getText())) { anagram = new Anagram(); answer.setText("CORRECT!"); word.setText(anagram.getRandomScrambledWord()); this.repaint(); try { Thread.currentThread().sleep(3000); } catch (Exception e) { } answer.setText(""); } else { answer.setForeground(Color.pink); answer.setText("INCORRECT!"); } 编辑: 我的解决方案 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: if (anagram.isCorrect(userInput.getText())) { answer.setText("CORRECT!"); ActionListener taskPerformer = new ActionListener() { public void actionPerformed(ActionEvent evt) { anagram = new Anagram(); word.setText(anagram.getRandomScrambledWord()); answer.setText(""); userInput.setText(""); } }; Timer timer = new Timer(3000,taskPerformer); timer.setRepeats(false); timer.start(); } else { answer.setForeground(Color.pink); answer.setText("INCORRECT!"); } } 我不确定,但我希望我遵循MadProgrammer的建议而不是阻止事件本身,而是新线程.我也会查找Java Timer. 解决方法
Swing是一个事件驱动的环境.阻止事件调度线程时,不能处理任何新事件.
您永远不应该在任何耗时的过程中阻止EDT(例如I / O,循环或线程#sleep). 您可能希望阅读The Event Dispatch Thread以获取更多信息. 相反,您应该使用javax.swing.Timer.它将在给定的延迟后触发ActionListener. 其好处是actionPerformed方法是使用Event Dispatching Thread的上下文执行的. 有关示例,请查看this或this或this或this (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 如何使用Java2D绘制内部笔划
- SpringBoot学习之全局异常处理设置(返回JSON)
- Java 中的 syncronized 你真的用对了吗
- java – 访问日志中的奇怪请求导致IllegalArgumentExceptio
- 初始化程序块和变量定义等执行什么顺序? (在java中)
- java – Android GC注意事项 – GC何时运行,并可以从代码跟
- java – 传递参数的不同方法:String args []或-D?
- java – 为什么String.indexOf不使用异常,但是当没有找到子
- javaweb中mysql数据库连接步骤方法及其实例
- java – 最好使用:Action vs ActionListener?