繁体   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