簡體   English   中英

Java:雙擊要重置的JSlider

[英]Java: Double-Click a JSlider to Reset

我有一個JSlider設置我的節拍器的速度,從40 - 200,其中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);
    }
}

提前致謝!

這應該可以幫到你: http//docs.oracle.com/javase/tutorial/uiswing/events/mouselistener.html

您需要閱讀並實現MouseListener。 您可以使用int getClickCount()來計算用戶點擊的次數,這將有助於您閱讀雙擊。

希望這可以幫助!

即使我沒有看到一個問題,我的觀點是你正在尋找MouseListener

不是簡單的工作,你必須添加javax.swing.Timer並監聽,如果在固定期間鼠標clike一次或兩次, 例如

我最近寫了類似的東西,所以我可以區分單鍵和雙鍵鼠標按鈕點擊:

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 */
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM