我有两个jbuttons(jslider左右)和一个jslider。
在左边的Jbutton上按下鼠标时,jslider需要向左移动。
在右边Jbutton上按下鼠标时,jslider需要向右移动。
请帮助我如何解决这个问题。
由于 乔蒂
答案 0 :(得分:2)
根据here,您需要做的就是使用setValue(int)
void setValue(int)
设置或获取滑块的当前值。 set方法还可以定位滑块的旋钮。
我假设您的意思是移动实际指针而不是整个组件本身。如果要移动整个JSlider,则应使用.setLocation(int x, int y)
方法。
编辑:这取决于你需要做什么。如果要以编程方式移动滑块,可能需要设置Thread.sleep(超时),以便线程暂停一段时间,以便您可以看到滑块移动。另一方面,您可以在每次按下按钮时使滑块移动一次,例如,每次按下“向左”按钮时,滑块的值减少10.右按钮发生相反的情况。后者似乎是最广泛使用的(据我所知)方法。
答案 1 :(得分:2)
JSlider#setValue
用于将滑块位置设置为值。该值应在(包括)JSlider#getMinimum
和JSlider#getMaximum
之间的范围内,滑块将负责将值转换为“像素位置”。
修改 - 您可以使用Thread#sleep
引入延迟。在向JSlider发送下一个“setValue”消息之前,您只需要等待几毫秒:
因此,按下按钮时,您处于循环中:
while(isPressed) {
adjustSliderByOneTick();
try {
Thread.sleep(100); // 100 milliseconds for a first test
} catch (InterruptedException e) {
break;
}
}
如果按钮被释放,您将isPressed
标记设置为false
,上述循环结束。
答案 2 :(得分:0)
作为替代方案,您可以查看结合JSlider
和JSpinner
的{{3}}。它也可以很好地与键盘配合使用,并且可以在大多数平台上根据用户首选的键盘重复率进行调整。