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

时间:2016-05-06 09:21:08

标签: java multithreading frame

我试图限制用户在一段时间内与该程序进行交互,但遗憾的是,没有成功。我已尝试使用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();
    }
}

1 个答案:

答案 0 :(得分:3)

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

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