Программно начать перетаскивание JSlider Thumb

Я создал JSlider. Я хочу иметь возможность щелкнуть в любом месте ползунка и заставить большой палец перемещаться в положение мыши и начинать перетаскивание (обычно вам нужно щелкнуть большой палец). Мне удалось переместить большой палец в положение мыши, добавив прослушиватель мыши с помощью метода:

public void mousePressed(MouseEvent e) {
    slider.setValue(((BasicSliderUI) slider.getUI()).valueForXPosition(e.getX()));
}

Проблема в том, что как только я нажимаю кнопку мыши, а затем перемещаю ее, большой палец остается на месте. Есть ли способ программно инициировать перетаскивание?


person jimn346    schedule 12.06.2013    source источник
comment
MouseMotionListener и отслеживать событие mouseDragged   -  person MadProgrammer    schedule 13.06.2013
comment
Но это не инициирует перетаскивание по умолчанию. У меня настроена привязка к галочкам, что обычно происходит после отпускания мыши. Если я просто отслеживаю событие mouseDragged, оно щелкнет до того, как мышь будет отпущена.   -  person jimn346    schedule 13.06.2013


Ответы (1)


Я смог инициировать перетаскивание, вызвав событие mousePressed для TrackListener SliderUI. Я создал класс, который расширяет BasicSliderUI и имеет прослушиватель мыши с событием:

public void mousePressed(MouseEvent e) {
    slider.setValue(valueForXPosition(e.getX()));
    trackListener.mousePressed(e);
}
person jimn346    schedule 21.06.2013