繁体   English   中英

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

[英]How to restrict the user from interacting with the program for a certain period of time?

我试图限制用户在一段时间内与程序交互,但遗憾的是,没有成功。 我试过使用Thread.sleep ,但是一旦sleep操作结束,用户的输入就会赶上并继续执行,直到它完成。

例如,如果我使用下面的代码,程序将按照上面提到的方式运行:它会在提供的时间段(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();
    }
}

原因是Thread.sleep()会阻塞 UI 线程。 因此,通过第一次单击,您将获得一个输出,并且您的应用程序将存储以下事件,以便在睡眠期间再次单击。 然后,在您的 GUI 线程从睡眠状态恢复后,事件将被释放并执行一些打印提示,直到它进入睡眠状态。 因为

阻塞 UI-Thread 并不是一件小事。 如果您想阻止用户输入,您应该禁用触发事件的按钮或节点,并在处理完成后启用它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM