我有JSlider
,最小值为0,最大值为100.其当前值为0.
在运行时如何获取滑块移动的每个值?例如,使用我当前的代码,如果我将滑块从0更快地更改为16,它会显示如下输出:
0
1
2
3
4
7
16
它跳过了8到15,因为我将滑块从7直接移动到16非常快。但我不希望这种情况发生。我希望打印滑块在其移动中遇到的每个值。
我还希望程序捕获滑块在其移动中所采用的最后一个值。
这是我的代码:
p1.addChangeListener(new ChangeListener()
{
@Override public void stateChanged(ChangeEvent e)
{
if (p1.getValueIsAdjusting())
{
System.out.println(p1.getValue());
}
}
});
有谁可以解释为什么不打印每个值?
答案 0 :(得分:3)
大多数人都有相反的问题,因为他们只想要最终的JSlider值,而不是中间值。
在Swing中无法保证每个中间值都会调用您的更改侦听器。
保留以前的JSlider值,确定最终值,并自己计算中间结果。
答案 1 :(得分:0)
如果我没弄错的话,getValueIsAdjusting()
对你看到的行为负责。当用户拖动滑块时,它可以避免不必要的代码执行。
如果删除if
子句,则应该看到每个值。
答案 2 :(得分:0)
在运行时如何获取滑块移动的每个值?
由于JSlider
实际上是一维的,我建议:
第3点的结果似乎是你问题的答案。
当然,既然这是一个微不足道的答案,那么就会提出64美元的问题......
您尝试为用户提供哪些应用程序功能?向最终用户解释,以获得更好的答案。