如何在jbutton上按下鼠标移动jslider?

时间:2010-11-10 07:32:10

标签: java swing jbutton jslider

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

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

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

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

由于 乔蒂

3 个答案:

答案 0 :(得分:2)

根据here,您需要做的就是使用setValue(int)

void setValue(int)

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

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

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

答案 1 :(得分:2)

JSlider#setValue用于将滑块位置设置为值。该值应在(包括)JSlider#getMinimumJSlider#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)

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