繁体   English   中英

Java ChangeListener多次触发

[英]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个事件,分别是mouseDownmouseUp和更改本身。

更改完成后,您可以使用getValueIsAdjusting对事件进行操作:

JSlider source = (JSlider)e.getSource();
if (!source.getValueIsAdjusting()) {
   ...
} 

请参阅: 如何编写变更侦听器

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM