Вопрос

У меня есть JSLIDER, который показывает размеры ставок (для игры в покер), я пытаюсь достичь того, что, когда щелчок мыши происходит, ползунок прыгает вперед на сумму ставки (то есть большое количество слепых), а не просто увеличивает один. Если щелчок мыши происходит слева от панели, я хочу, чтобы она уменьшилась на фиксированную сумму. Я посмотрел на прикрепление слушателя мыши, но не знаю, как я могу использовать событие, чтобы узнать, на какой стороне панели мыши щелкнули.

Любые идеи?

Это было полезно?

Решение

Вам просто нужно изменить свой взгляд на проблему.

Не рассматривайте клики как на «левый» или «справа» (ниже или выше) текущую ставку.

Скорее, вы просто храните старую тика и смотрите на то, что такое новый тик. Разница скажет вам, попытался ли пользователь увеличить (положительную дельту) или уменьшить (отрицательную дельту).

Затем вы можете увеличить желаемую сумму «фиксированной ставки».

Другие советы

Я думаю, вам нужно написать пользовательский интерфейс для этого. Это должно начать вас:

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 );
     }
}

Вот как я выполняю мысли

 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 с атрибуция
Не связан с StackOverflow
scroll top