以编程方式开始拖动JSlider Thumb

时间:2013-06-12 20:49:00

标签: java swing mouse drag jslider

我创建了一个JSlider。我希望能够单击滑块上的任意位置并让拇指移动到鼠标的位置并开始拖动(通常您必须单击拇指)。通过使用以下方法添加鼠标监听器,我可以让拇指移动到鼠标位置:

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

问题是,一旦我按下鼠标按钮,然后移动它,拇指就会保持原位。有没有办法以编程方式启动拖动?

1 个答案:

答案 0 :(得分:1)

我可以通过调用SliderUI的trackListener的mousePressed事件来启动拖动。我创建了一个扩展BasicSliderUI的类,并且有一个带有事件的鼠标监听器:

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