4

对于当前项目,我们需要只允许用户每 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);
    }
}
4

2 回答 2

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();
于 2012-10-15T12:50:34.333 回答
3

在java中编程一个按钮最多每5秒按下一次

于 2012-10-15T13:00:13.703 回答