我试图限制用户在一段时间内与该程序进行交互,但遗憾的是,没有成功。我已尝试使用Thread.sleep
,但只要sleep
操作结束,用户就会#{1}}。输入赶上并继续执行直到它完成。
例如,如果我使用下面的代码,程序将如上所述:它将在提供的时间段(1,5s)内休眠,然后用户“动作会赶上(它会打印"等待" 在Thread.sleep
处于活动状态时用户点击的次数)。那么我该如何防止这种情况呢?任何建议都将不胜感激。
public void mouseClicked(MouseEvent e) {
print();
}
public void print() {
System.out.println("After waiting.");
try {
Thread.sleep(1500);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
答案 0 :(得分:3)
原因是Thread.sleep()
将阻止UI线程。因此,通过第一次单击,您将获得一个输出,并且您的应用程序将存储以下事件,从而在睡眠期间再次单击。然后,在GUI-Thread从休眠状态恢复后,将释放事件并执行一些打印提示,直到它休眠为止。因为
阻止UI-Thread并不是一件容易的事。如果您想阻止用户输入,您应该禁用一般触发事件的按钮或节点,并在处理完成后启用它。