0

JButtonでJavaスイングを使用しています。ボタンを押すと、タイマーが開始され、3 秒間隔でボタンを押した回数がカウントされます。java.util.timer タイマーを使用しようとしています。これは正しい方法ですか?タイマーを開始して 3 秒後に停止するにはどうすればよいですか?

import javax.*;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import java.util.Timer;
import java.awt.*;
import java.awt.event.*;

public class button{
    public static void main(String[] args){
      JFrame frame = new JFrame("Test");
      frame.setVisible(true);
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    //frame.setSize(100, 75);
    JPanel panel = new JPanel();
    frame.add(panel);
    JButton button = new JButton ("                           ");
    button.setSize(300, 150);
    panel.add(button);
    button.addActionListener(new Action());
    frame.setAlwaysOnTop(true);
    frame.setBounds(1225, 675, 100, 75);        
    }
 static class Action implements ActionListener{
    public void actionPerformed (ActionEvent e){

    }
}
 public static int timer(){
     Timer timer = new Timer();      
     return 7;
 }
}
4

4 に答える 4

0

timer なしで簡単にこれを行うことができます:

// Time button being pressed
long milliseconds = 0;

JButton myButton = new JButton();

// Listener to click, press, release etc
myButton.addMouseListener(new MouseAdapter(){
    @Override
    public void mousePressed(MouseEvent e){
        milliseconds = System.currentTimeMillis();
    }
    @Override
    public void mouseReleased(MouseEvent e){
        long end = (milliseconds - System.currentTimeMillis()); // to seconds
        System.out.println(String.format("You have pressed the button for %ld milliseconds", end));
    }
});

3秒以内」の意味はわかりませんがmilliseconds > 3000、コードを使用すると時間を印刷することを避けることができます。

于 2013-11-03T15:52:00.750 に答える
0

3 秒後に何か別のことをしたいと思っていると思います。つまり、ユーザーが最初にボタンを押すと、タイマーが開始され、ユーザーがボタンをさらに数回押すと、3 秒後にボタンを押した回数を示すメッセージがポップアップ表示されるか、3 秒後に別の操作が行われます。 . これらは、質問の説明に記載すると便利な種類のものです。そうしないと、タイマーは必要ないと人々は言うでしょう。

そして、そのように説明すると、タイマーはクリック数をカウントするためだけに必要ではないことが指摘されています。私なら、リストを作成して各ボタンクリックのタイムスタンプを保存し、タイマーの後に起動するリスナーで、ウィンドウ内に収まるタイムスタンプの数をカウントします。ユーザーがボタンを押しました。問題は、最後の 1 つまたは 2 つのボタンクリック リスナーの実行の前にタイマー起動リスナーがスケジュールされていない場合、1 つまたは 2 つずれる可能性があることです。

それを使用するには、必要な遅延で時間を作成し、アクション リスナーを追加し、アクション リスナーでボタン クリックのリストを取得し、ウィンドウ内で発生した回数を分析してから、必要なことを行います。

于 2013-11-03T16:33:45.740 に答える