2012-10-15 357 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();