java - 如何在不延迟界面的情况下延迟 gui 的操作?

标签 java swing user-interface delay

我正在创建一个闪存卡程序,并希望在弹出问题和回答之间有几秒钟的延迟。我一直在尝试使用 thread.sleep...

question.setText(questionString);

if(timed.isSelected())
{
     delay();//uses thread.sleep
}

answer.setText(questionString);

sleep 在问题出现在 gui 上之前执行,因此它会立即重新出现问题和答案。问答只是 JPanel,定时是 JRadioButton。

所以进入实际问题,我是否可以延迟答案的出现,以便它顺利进行?好像我可能在 cmd 提示符中使用了 println。

最佳答案

Thread.sleep 实际上会暂停运行它的线程。当您在事件调度线程上运行时,这可能是危险的,因为您实际上在 sleep 运行时停止了任何 GUI 更新,这样您设置了文本,然后停止 GUI 更新,直到您设置带有答案的文本 - 这个问题可以永远不会被吸引。

对于计时的非阻塞替代方案,请查看 How to use Swing Timers它看着 javax.swing.Timer类(class)。此类允许您指定延迟,以及在该延迟过去后要完成的操作,而无需暂停您的线程。

关于java - 如何在不延迟界面的情况下延迟 gui 的操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21466578/

相关文章:

java - 如何获取与使用 JPA 映射的其他实体具有多对多关系的实体成员列表?

java - 在netbeans中执行构建的jar文件时出现问题

java - Gif 安全颜色选择器

java - 如何使用关键字 "new"且不带尖括号创建 JComboBox?

c++ - 如何在 Raylib 中用像素追踪路径?

user-interface - 韩国地址系统

java - 将图像加载到字符串中并在更改图像后保存

java - android TextView 不显示希伯来语字体

JavaFX : Why doesn't the setContent method of SwingNode with a JComponent parameter accept a JPanel?

java桌面应用程序-在本地服务器上共享一台数据库主机