Пользовательский диапазон для использования с JSlider - PullRequest
2 голосов
/ 28 мая 2011

Я пытаюсь создать jslider, который перемещается в следующих диапазонах.

[-x,-1)[1,x]

Короче говоря, я не хочу, чтобы значения -1 и 0 были допустимыми значениями для JSlider. Но значения от x до -1 должны быть разрешены, и от 1 до x должны быть разрешены.

Я пытаюсь не писать хакерский код, поэтому я не хочу писать функцию в коде пользовательского интерфейса, которая просто получает значение из другого (непрерывного) диапазона, а затем преобразует его в нужный мне диапазон куча таких заявлений.

В идеале я должен просто позвонить slider.getValue() и знать, что возвращаемое значение будет в диапазоне, который я описал выше.

Ответы [ 2 ]

2 голосов
/ 28 мая 2011

Значение ползунка - это просто отношение текущей позиции большого пальца к ширине ползунка в пикселях. IIUC, у вас есть три диапазона, [-x,-1), [-1,1) и [1,x], поэтому вам понадобится два больших пальца. Вы можете посмотреть на JXMultiThumbSlider, который поддерживает MultiThumbModel.

Приложение. Для соответствующего варианта использования я начал с Как написать пользовательский компонент Swing . Это трудоемко, но может привести к более чистому результату.

2 голосов
/ 28 мая 2011

Я думаю, вы должны выполнить эту настройку самостоятельно, возможно, в рамках переопределенного метода setValue()?

Попробуйте этот код:

    int x = 10;
    @Override
    public void setValue(int n)
    {
        if((n >= -x && n < -1)|| (n =< x && n >= 1))
        {   
            super.setValue(n);
            System.out.println("OI in setValue");
        }
    }
...