簡體   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