让JSlider栏移动鼠标点击事件

时间:2010-03-08 16:04:27

标签: java user-interface swing mouseevent jslider

我有一个显示下注大小的JSlider(对于扑克游戏)我试图达到这样的效果:当鼠标点击发生时,滑块向前跳跃下注量(即大盲注量)而不是仅仅增加一。如果鼠标点击发生在栏的左侧,我希望它减少固定量的其他增量。我查看了附加一个鼠标监听器,但不知道如何使用该事件来查找鼠标单击栏的哪一侧。

有什么想法吗?

3 个答案:

答案 0 :(得分:4)

您只需要改变对问题的看法。

请勿将点击视为当前下注的“左”或“右”(下方或上方)。

相反,您只需存储旧标记,然后查看新标记是什么。差异将告诉您用户是否尝试增加(正增量)或减少(负增量)。

然后你可以增加你想要的“固定赌注”金额。

答案 1 :(得分:2)

我认为您需要为此编写自定义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 );
     }
}

答案 2 :(得分:1)

这就是我完成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
});