首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java ChangeListener多次触发

Java ChangeListener多次触发
EN

Stack Overflow用户
提问于 2013-01-03 02:41:07
回答 2查看 2.7K关注 0票数 2

我在滑块上有一个简单的changelistener。有人能解释一下为什么当我点击一个新的位置时,它会发射3次吗?在我写代码将先前的值保存在某个地方之前,看看它是否真的发生了变化,我想知道是否有其他方法来解决这个问题。第一个跳跳器显示它原来的样子,下一个显示新值,最后一个重复新值。

代码语言:javascript
复制
        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);
EN

回答 2

Stack Overflow用户

发布于 2013-01-03 02:52:36

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

完整教程的链接:http://docs.oracle.com/javase/tutorial/uiswing/components/slider.html

但这里是重要的一点:

代码语言:javascript
复制
public void stateChanged(ChangeEvent e) {
    JSlider source = (JSlider)e.getSource();
    if (!source.getValueIsAdjusting()) {
        // Do what needs to occur here.
    }
}

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

票数 5
EN

Stack Overflow用户

发布于 2013-01-03 02:56:07

ChangeListener中有3个事件作为链的一部分,即mouseDownmouseUp和更改本身。

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

代码语言:javascript
复制
JSlider source = (JSlider)e.getSource();
if (!source.getValueIsAdjusting()) {
   ...
} 

请参阅:How to Write a Change Listener

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14127354

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档