java - 以编程方式开始拖动 JSlider Thumb

标签 java swing mouse drag jslider

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

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

关于java - 以编程方式开始拖动 JSlider Thumb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17075091/

相关文章:

java - 互动影像

java - 在 JavaFX 中将两个 Spinner 控件绑定(bind)到 TableView 中

java - 生成 RTT 值

java - JPanel 不添加按钮和文本字段

java - 不同机器上的字体及其大小

javascript - 鼠标右键点击 Firefox 触发点击事件

python - 在 Linux 中实时监控鼠标坐标

java - 如何为 JTable 中的特定列编写焦点获得事件?

java - 未调用 Cxf 异常映射器

java - 当 JFrame 移动到桌面前面时会触发什么 Swing 事件