有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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

question.setText(questionString);

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

answer.setText(questionString);

睡眠是在问题出现在gui上之前执行的,因此它只是在问题和答案同时出现时立即出现。提问和回答只是JPanel,计时是JRadioButton

那么,在实际问题上,我是否可以推迟答案的出现,使其流畅?好像我在cmd提示符中使用了println


共 (1) 个答案

  1. # 1 楼答案

    线。睡眠实际上会暂停运行它的线程。当您在事件调度线程上运行时,这可能是危险的,因为在睡眠运行时,您基本上会停止任何GUI更新,例如设置文本,然后停止GUI更新,直到您使用答案设置文本-问题永远不会被画出来

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