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

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


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

最佳答案

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

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

07-24 13:49