1

我有两个 jbuttons(jslider 上的左右)和一个 jslider。

在左 Jbutton 上按下鼠标时,jslider 需要向左移动。

在右 Jbutton 上按下鼠标时,jslider 需要向右移动。

请帮助我如何解决这个问题。

谢谢乔蒂

4

3 回答 3

2

根据这里,你需要做的就是使用setValue(int)

无效 setValue(int)

设置或获取滑块的当前值。set 方法还定位滑块的旋钮。

我假设您的意思是移动实际指针而不是整个组件本身。如果你想移动整个JSlider,你应该使用该.setLocation(int x, int y)方法。

编辑:这取决于你需要做什么。如果您想以编程方式移动滑块,您可能需要放置一个 Thread.sleep(timeout) 以便线程暂停一段时间,让您看到滑块移动。另一方面,您可以使滑块在每次按下按钮时移动一次,例如,每次按下“左”按钮时,滑块的值减少 10。右按钮发生相反的情况。后者似乎是使用最广泛(至少据我所知)的方法。

于 2010-11-10T07:37:00.113 回答
2

JSlider#setValue用于将滑块位置设置为值。该值应在(包括)JSlider#getMinimum和之间的范围内JSlider#getMaximum,滑块将负责将该值转换为“像素位置”。


编辑-您可以使用Thread#sleep. 在将下一个“setValue”消息发送到 JSlider 之前,您只需要“等待”几毫秒:

因此,当按下按钮时,您处于一个循环中:

while(isPressed) {
  adjustSliderByOneTick();
   try { 
     Thread.sleep(100);  // 100 milliseconds for a first test
   } catch (InterruptedException e) {
     break;
   }
}

如果释放按钮,则将isPressed标志设置为false并且上述循环结束。

于 2010-11-10T07:38:32.807 回答
0

作为替代方案,您可以查看SpinSlider, 它结合了JSliderJSpinner。它还可以很好地与键盘配合使用,并且可以在大多数平台上根据用户首选的键盘重复率进行调整。

于 2010-11-10T12:23:48.160 回答