java - 如何限制用户在一定时间内与程序交互?

标签 java multithreading frame

我试图限制用户在一段时间内与程序交互,但遗憾的是,没有成功。我尝试过使用 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/

相关文章:

java - Mockito.verify 方法包含 boolean 值和参数捕获器

java - BMI 计算器,需要帮助修复清除按钮

java - Java GUI 中的问题

java - parallelStream中HashSet的线程安全

html - 框架集边界 hell 中的框架集

java - 使用 Java 将数据从 Cassandra 中的一个表复制到另一个表

python - 如何在旧线程结束时启动新线程?

multithreading - 在多线程管道中维护秩序

java - 如何在 jar 文件中制作 Frame/Applet 应用程序?

ios - 重新加载 View 时 UILabel 没有采用适当的框架