2012-10-15 585 views
4

對於當前項目,我們需要允許用戶每5秒左右按一次按鈕一次。我們使用一個按鈕來啓動打印作業,但我們需要阻止用戶發送垃圾信息並啓動一打打印作業。在java中每5秒最多按一次按鈕一次按下按鈕

我們目前正在嘗試使用下面的代碼,但即使按鈕被禁用,它似乎也會點擊點擊。所以在延遲5秒之後,點擊被記錄下來非常困難,那時按鈕被禁用。

private void Button1ActionPerformed(java.awt.event.ActionEvent evt) {           

     Button1.setEnabled(false); 
     pressCount++; 
     System.out.println("Press count: " + pressCount); 
    PrintJob print = new PrintJob(); 
    try { 
     Thread.sleep(5000); 
    } catch (InterruptedException ex) { 
     Logger.getLogger(GUIFrame.class.getName()).log(Level.SEVERE, null, ex); 
    } 
    try { 
     print.PrintJob(); 
    } catch (IOException ex) { 
     Logger.getLogger(GUIFrame.class.getName()).log(Level.SEVERE, null, ex); 
    } 
} 
+1

不應該在GUI線程(EDT)上調用'Button1.setEnabled(false)'嗎? – assylias

+0

我tink setEnabled是幾個揮杆相關的方法之一,你可以調用EDT – RNJ

+0

你試圖解決什麼問題? –

回答

3

不要讓EDT等5秒鐘。您應該使用另一個線程休眠5秒鐘並設置按鈕啓用。事情是這樣的:

new Thread(new Runnable() { 
    public void run() { 
    try { 
     Thread.sleep(5000); 
    } catch (InterruptedException e) { 
     // handle it 
    } 
    SwingUtilities.invokeLater(new Runnable() { 
     public void run() { 
     Button1.setEnabled(true); 
     } 
    }); 
    } 
}).start();