用右键生成的JSlider,给每个滑动条上面都添加了两个JLabel标签,一个显示该滑动条的名称,另一个显示该滑动条的当前数值。问题是:当我点击右键生成了多个滑动条时,不管改变哪个滑动条,相应位置标签数值只有最后一个滑动条的标签值发生改变。
怎么办?急急急!!!!!!!!!!!!
------解决思路----------------------
多种解决方案,要么你各自绑定的监听器里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);