3

メトロノームの速度を 40 から 200 に設定する JSlider があります。ここで、120 がデフォルトです。

ユーザーがメトロノーム ボタンをクリックすると、JSlider に表示されている速度でメトロノームが再生されます。ユーザーがスライダーを右にドラッグすると、メトロノームの速度が速くなり、左にスライドすると速度が遅くなります。

ユーザーが JSlider ボタンをダブルクリックするとデフォルトの 120 に戻るように機能を追加するにはどうすればよいですか?

これが私のコードです:

public Metronome() {
    tempoChooser = new JSlider();
    metronomeButton = new JToggleButton();

    JLabel metText = new JLabel("Metronome:");
    add(metText);

    ...

    tempoChooser.setMaximum(200);
    tempoChooser.setMinimum(40);
    tempoChooser.addChangeListener(new javax.swing.event.ChangeListener() {
        public void stateChanged(javax.swing.event.ChangeEvent evt) {
            tempoChooserStateChanged(evt);
        }
    });
    add(tempoChooser);
    ...
    }

private void tempoChooserStateChanged(javax.swing.event.ChangeEvent evt) {
    final int tempo = tempoChooser.getValue();
    if (((JSlider) evt.getSource()).getValueIsAdjusting()) {
        setMetronomeButtonText(tempo);
    } else {
        processTempoChange(tempo);
    }
}

前もって感謝します!

4

4 に答える 4

3

これはあなたを助けるはずです:http://docs.oracle.com/javase/tutorial/uiswing/events/mouselistener.html

それを読んで、MouseListener を実装する必要があります。int getClickCount()ユーザーがクリックした回数をカウントするために使用できます。これは、ダブルクリックを読み取るのに役立ちます。

お役に立てれば!

于 2012-02-05T15:33:17.783 に答える
1

私は質問を見ませんが、私の推測はあなたが探しているということですMouseListener

于 2012-02-05T15:06:32.203 に答える
0

単純な仕事ではありません。たとえば、一定期間中にマウスが1回または2回好きになった場合は、 javax.swing.Timerを追加してリッスンする必要があります。

于 2012-02-05T15:41:10.603 に答える
0

私は最近、マウスの左ボタンのシングルクリックとダブルクリックを区別できるように、同様のことを書きました。

private Timer timer;
@Override
public void mouseClicked(MouseEvent e) {
    if(e.getButton() == MouseEvent.BUTTON1){
        if (timer == null) {
            timer = new Timer();
            timer.schedule(new TimerTask() {

                @Override
                public void run() { // timer expired before another click received, therefore = single click
                    this.cancel();
                    timer = null;
                    /* single-click actions in here */
                }

            }, (Integer) Toolkit.getDefaultToolkit().getDesktopProperty("awt.multiClickInterval"));
        }
        else { // received another click before previous click (timer) expired, therefore = double click
            timer.cancel();
            timer = null;
            /* double-click actions in here */
        }
    }
}
于 2012-02-05T15:49:13.977 に答える