我有两个 jbuttons(jslider 上的左右)和一个 jslider。
在左 Jbutton 上按下鼠标时,jslider 需要向左移动。
在右 Jbutton 上按下鼠标时,jslider 需要向右移动。
请帮助我如何解决这个问题。
谢谢乔蒂
根据这里,你需要做的就是使用setValue(int)
无效 setValue(int)
设置或获取滑块的当前值。set 方法还定位滑块的旋钮。
我假设您的意思是移动实际指针而不是整个组件本身。如果你想移动整个JSlider,你应该使用该.setLocation(int x, int y)
方法。
编辑:这取决于你需要做什么。如果您想以编程方式移动滑块,您可能需要放置一个 Thread.sleep(timeout) 以便线程暂停一段时间,让您看到滑块移动。另一方面,您可以使滑块在每次按下按钮时移动一次,例如,每次按下“左”按钮时,滑块的值减少 10。右按钮发生相反的情况。后者似乎是使用最广泛(至少据我所知)的方法。
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
并且上述循环结束。
作为替代方案,您可以查看SpinSlider
, 它结合了JSlider
和JSpinner
。它还可以很好地与键盘配合使用,并且可以在大多数平台上根据用户首选的键盘重复率进行调整。