当前位置: 代码迷 >> J2SE >> 关于JSlider获得数值有关问题
  详细解决方案

关于JSlider获得数值有关问题

热度:73   发布时间:2016-04-23 19:51:14.0
关于JSlider获得数值问题
用右键生成的JSlider,给每个滑动条上面都添加了两个JLabel标签,一个显示该滑动条的名称,另一个显示该滑动条的当前数值。问题是:当我点击右键生成了多个滑动条时,不管改变哪个滑动条,相应位置标签数值只有最后一个滑动条的标签值发生改变。
     怎么办?急急急!!!!!!!!!!!!
------解决思路----------------------
引用:
谢谢zys59关注,新人不知道这里还能调格式。这下知道了。
谢谢qq118194716高人的指点,知道问题是这个了,JLabel[i]最后一个接受改变,再请问一下:如何获得被触发的滑块呢?谢谢!

多种解决方案,要么你各自绑定的监听器里i值不被共享,各自存储
要么你遍历下看是哪个滑块被触发了(你不是保存了它们的引用么)

JSlider valueJSlider = (JSlider) e.getSource();

//遍历所有生成的滑块
int a=0;
for(int j=0;j<=i;j++)
{if(rkJSlider[j]==valueJSlider)
a = j;
}
temp = valueJSlider.getValue();
numJLabel[a].setText(temp + "");

其实如果是这样的话你只需要它们共享同一个监听器就可以了
另外你的滑块超过10个数组肯定越界,你得限制下
------解决思路----------------------
第一种解决方案也说下吧
各自存储不共享方案:

int temp;
int in = i;
public void stateChanged(ChangeEvent e) {
JSlider valueJSlider = (JSlider) e.getSource();
/*int a=0;
for(int j=0;j<=i;j++)
{if(rkJSlider[j]==valueJSlider)
a = j;
}*/
temp = valueJSlider.getValue();
numJLabel[in].setText(temp + "");
System.out.println(temp);