Java ChangeListener多次触发

gba*_*bic 1 java swing jslider changelistener

我在滑块上有一个简单的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);
Run Code Online (Sandbox Code Playgroud)

Eri*_*dek 5

您需要检查更改是否值调整.

链接到完整的教程: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.
    }
}
Run Code Online (Sandbox Code Playgroud)

基本上当getValueIsAdjusting()返回false时,用户已停止移动滑块.