4

現在のプロジェクトでは、ユーザーがボタンを押すことができるのは5秒ごとに1回だけにする必要があります。ボタンを使用して印刷ジョブを開始しますが、ユーザーがボタンをスパムして1ダースの印刷ジョブを開始するのを防ぐ必要があります。

現在、次のコードを試していますが、ボタンが無効になっている場合でもクリックをキューに入れるようです。したがって、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秒に1回押すようにプログラムする

于 2012-10-15T13:00:13.703 に答える