【问题标题】:Java ListSelectionListener double change valueJava ListSelectionListener 双重改变值
【发布时间】:2011-07-06 12:12:12
【问题描述】:

我有 JList 和 ListSelectionListener 的 Java 类:

final JList myList = new JList();

// ...

myList.addListSelectionListener(new ListSelectionListener() {
            public void valueChanged(ListSelectionEvent e) {  
                System.out.println("selected");
            }
});

但输出是

selected
selected

我应该如何更改我的代码,输出应该是一个selected

【问题讨论】:

    标签: java swing event-handling jlist


    【解决方案1】:

    看看getValueIsAdjusting

    返回这是否是其中之一 一系列的多个事件,其中 仍在进行更改

    仅当此方法返回 false 时才打印“selected”。

    【讨论】:

    • 虽然其他答案都在正确的路径中,但应该将这个答案标记为最佳,因为 getValuesAdjusting() 将在最后一个事件时返回 false。
    【解决方案2】:

    您需要参考:

    ListSelectionEvent. 上的getValueIsAdjusting() 来自 API:返回这是否是一系列多个事件中的一个,并且仍在进行更改。

    【讨论】:

      【解决方案3】:

      试试

               if(e.getValueIsAdjusting())
            {
                System.out.println("Selected");  
            }
      

      【讨论】:

      • 但是,当您使用向上和向下箭头浏览列表时,这会中断。所以在这种情况下使用 if(!e.getValueIsAdjusting()){ System.out.println("Selected"); } 除此之外,这工作得很好。
      • Chris 是对的,这应该在e.getValueIsAdjusting() 前面有一个!
      猜你喜欢
      • 2015-05-12
      • 2012-08-24
      • 2012-02-14
      • 2012-07-09
      • 2013-09-25
      • 2015-08-22
      • 1970-01-01
      • 1970-01-01
      • 2010-10-04
      相关资源
      最近更新 更多