[英]Java ChangeListener firing multiple times
我在滑块上有一个简单的changelistener。 任何人都可以解释一下当我点击一个新职位时为什么会被触发3次。 在编写代码以将先前的值保存在某处以查看其是否真的改变之前,我想知道是否还有另一种方法可以解决该问题。 第一个老虎机按原样显示它,第二个老虎机显示新值,最后一个重复新值。
slider_1 = new JSlider();
slider_1.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent arg0) {
if (fullyInitialized == 1) {
if (comboBox_1.getSelectedIndex() < 1) {
SendData2Device(1);
}
}
}
});
slider_1.setOrientation(SwingConstants.VERTICAL);
您需要检查更改是否在调整值。
链接到完整的教程: http : //docs.oracle.com/javase/tutorial/uiswing/components/slider.html
但这是重要的一点:
public void stateChanged(ChangeEvent e) {
JSlider source = (JSlider)e.getSource();
if (!source.getValueIsAdjusting()) {
// Do what needs to occur here.
}
}
基本上,当getValueIsAdjusting()返回false时,用户已停止移动滑块。
ChangeListener
链中有3个事件,分别是mouseDown
, mouseUp
和更改本身。
更改完成后,您可以使用getValueIsAdjusting
对事件进行操作:
JSlider source = (JSlider)e.getSource();
if (!source.getValueIsAdjusting()) {
...
}
请参阅: 如何编写变更侦听器
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.