我试图限制用户在一段时间内与程序交互,但遗憾的是,没有成功。我尝试过使用 Thread.sleep
,但是一旦 sleep
操作结束,用户的输入就会 catch 并继续执行,直到完成。
例如,如果我使用下面的代码,程序将按照上面提到的方式运行:它将 hibernate 指定的时间段(1,5s),然后用户的操作将 catch (它将打印“等待后”与 Thread.sleep
处于 Activity 状态时用户点击的次数相同。那么我该如何防止这种情况发生呢?任何建议将不胜感激。
public void mouseClicked(MouseEvent e) {
print();
}
public void print() {
System.out.println("After waiting.");
try {
Thread.sleep(1500);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
最佳答案
原因是Thread.sleep()
会阻塞UI线程。因此,通过第一次单击,您将获得输出,并且您的应用程序将在 sleep 期间再次单击时存储以下事件。然后,在您的 GUI 线程从 hibernate 状态恢复后,事件将被释放,并且一些打印提示将被执行,直到它 hibernate 为止。因为
阻塞 UI 线程并不是一件小事。如果您想阻止用户输入,您应该禁用触发事件的按钮或节点,并在其处理完成时启用它。
关于java - 如何限制用户在一定时间内与程序交互?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37068706/