首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在java中按字母顺序排列组合框?(使用Netbeans IDE 7.3)

如何在java中按字母顺序排列组合框?(使用Netbeans IDE 7.3)
EN

Stack Overflow用户
提问于 2013-11-08 21:10:55
回答 2查看 550关注 0票数 1

我确实有一个带有不同值的组合框,比如" FT001“、" FT002”和"FT003“,问题是如果我在FT001之前添加FT002,那么"FT002”总是排在第一位。

现在我正在寻找一种方法,它将按字母表进行排序。

我使用下面的代码来填充combobox:

代码语言:javascript
复制
public DefaultComboBoxModel getPraktijkenLijst(){
   DefaultComboBoxModel listModel = new DefaultComboBoxModel();

    listModel.addElement("Selecteer een praktijk");

    int aantal = praktijkVerzameling.getAantalPraktijken();
    int i = 0;
    while(i < aantal){   
        listModel.addElement(praktijkVerzameling.getPraktijk(i).getPraktijkNaam());
        i++;
    }
    return listModel;     
}

"praktijkVerzameling“是一个用对象填充的ArrayList。

如果你们需要更多的信息来帮助我,请问:)

注:我是荷兰人,所以如果这里有荷兰人,我会比英语更懂荷兰语,谢谢。

EN

回答 2

Stack Overflow用户

发布于 2013-11-08 21:23:37

DefaultComboBoxModel.addElement(Object):在模型的末尾添加一项。因此,您正在使用的数组列表可以在使用model.addElement(Object)函数添加到model之前进行排序。您可以使用比较器对praktijkVerzameling ArrayList进行排序。例如,假设在praktijkVerzameling中是一个类类型为Praktijk的数组列表

代码语言:javascript
复制
       DefaultComboBoxModel model = new DefaultComboBoxModel();
       Collections.sort(praktijkVerzameling, new Comparator<Praktijk>(){

            @Override
            public int compare(Praktijk o1, Praktijk o2) {
               return o1.getPraktijkNaam().compareTo(o2.getPraktijkNaam()) ;
            }
        });

       for(Praktijk p : praktijkVerzameling)
           model.addElement(p.getPraktijkNaam());

       return model;
票数 0
EN

Stack Overflow用户

发布于 2013-11-08 21:41:13

删除此行:

代码语言:javascript
复制
DefaultComboBoxModel listModel = new DefaultComboBoxModel();

通过以下方式:

代码语言:javascript
复制
  DefaultComboBoxModel  listModel = new SortedComboBoxModel();

添加这个类:

代码语言:javascript
复制
 class SortedComboBoxModel extends DefaultComboBoxModel
 {
      public SortedComboBoxModel()
      {
           super();
      }



      public void addElement(Object element)
      {
           int index = 0;
           int size = getSize();

           //  Determine where to insert element to keep list in sorted order

           for (index = 0; index < size; index++)
           {
                Comparable c = (Comparable)getElementAt( index );

                if (c.compareTo(element) > 0)
                     break;
           }

           super.insertElementAt(element, index);
      }

      public void insertElementAt(Object element, int index)
      {
           addElement( element );
      }
 }

希望这就是你想要的。

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

https://stackoverflow.com/questions/19859911

复制
相关文章

相似问题

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