我正在创建一个闪存卡程序,并希望在弹出问题和回答之间有几秒钟的延迟。我一直在尝试使用 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/