繁体   English   中英

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

[英]How to alphabetize an combobox in java? (Using Netbeans IDE 7.3)

我确实有一个具有不同值的组合框,例如“ FT001”,“ FT002和“ FT003”。问题是,如果我在FT001之前添加FT002,则始终是“ FT002”。

现在我正在寻找一种方法,可以按字母排序。

我正在使用以下代码来填充组合框:

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。

如果你们需要其他信息来帮助我,请询问:)

PS:我是荷兰人,所以如果这里有人荷兰人,我会比英语更好地了解荷兰语,谢谢。

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

       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;

删除此行:

DefaultComboBoxModel listModel = new DefaultComboBoxModel();

与:

  DefaultComboBoxModel  listModel = new SortedComboBoxModel();

添加此类:

 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 );
      }
 }

希望这就是你想要的。

暂无
暂无

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

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