簡體   English   中英

使JSlider欄在鼠標單擊事件上移動

[英]getting JSlider bar to move on mouse click event

我有一個JSlider,它顯示(針對撲克游戲的)下注大小。我試圖達到這樣的效果:當發生鼠標單擊時,滑塊會向前下注一個下注數量(即大盲注數量),而不是僅僅增加一個。 如果鼠標單擊發生在條的左側,我希望它以固定量遞減,否則遞增。 我研究了附加鼠標偵聽器的方法,但是不知道如何使用該事件來找出鼠標單擊欄的哪一側。

有任何想法嗎?

您只需要改變對問題的看法。

不要將點擊視為當前投注的“左”或“右”(低於或高於)。

相反,您只需存儲舊的報價,然后查看新的報價是什么。 差異將告訴您用戶是嘗試增加(正增量)還是減小(負增量)。

然后,您可以增加所需的“固定下注”金額。

我認為您需要為此編寫一個自定義UI。 這應該使您開始:

import java.awt.*;
import javax.swing.*;
import javax.swing.plaf.basic.*;
import javax.swing.plaf.metal.*;

public class SliderScroll extends JFrame
{
    public SliderScroll()
    {
        final JSlider slider = new JSlider(0, 50, 20);
        slider.setMajorTickSpacing(10);
        slider.setMinorTickSpacing(5);
        slider.setExtent(5);
        slider.setPaintTicks(true);
        slider.setPaintLabels(true);
        getContentPane().add( slider );

        slider.setUI( new MySliderUI() );
    }

    class MySliderUI extends MetalSliderUI
    {
        public void scrollByUnit(int direction)
        {
            synchronized(slider)
            {
                int oldValue = slider.getValue();
                int delta = (direction > 0) ? 10 : -5;
                slider.setValue(oldValue + delta);
            }
        }
    }

    public static void main(String[] args)
    {
        JFrame frame = new SliderScroll();
        frame.setDefaultCloseOperation( EXIT_ON_CLOSE );
        frame.pack();
        frame.setVisible( true );
     }
}

這就是我完成MouseClickEvent的方式

 MoveSlider = new JSlider(JSlider.HORIZONTAL, 0, 0, 0);
 MoveSlider.addMouseListener(new MouseListener()
{
        public void mousePressed(MouseEvent event) {
            //Mouse Pressed Functionality add here
              }

        @Override
        public void mouseClicked(MouseEvent arg0) {
                // TODO Auto-generated method stub
            }
        @Override
        public void mouseEntered(MouseEvent arg0) {
            // TODO Auto-generated method stub
            }
        @Override
        public void mouseExited(MouseEvent arg0) {
            // TODO Auto-generated method stub
            }

        @Override
        public void mouseReleased(MouseEvent arg0) {
            // TODO Auto-generated method stub
});

暫無
暫無

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

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