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

如何在java中按字母顺序排列组合框?(使用Netbeans IDE 7.3),java,netbeans,combobox,sorted,Java,Netbeans,Combobox,Sorted,我确实有一个组合框,具有不同的值,如FT001、FT002和FT003。 问题是,如果在FT001之前添加FT002,则FT002始终是第一个 现在我正在寻找一种方法,它将在alphabeth上对其进行排序 我使用以下代码填充组合框: public DefaultComboBoxModel getPraktijkenLijst(){ DefaultComboBoxModel listModel = new DefaultComboBoxModel(); listModel.add

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

现在我正在寻找一种方法,它将在alphabeth上对其进行排序

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

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.addElementObject:在模型末尾添加一项。因此,在使用model.addElementObject函数添加到模型之前,可以对正在使用的数组列表进行排序。可以使用比较器对praktijkVerzameling ArrayList进行排序。例如,assumin praktijkVerzameling是类类型Praktijk的数组列表:

删除此行:

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

希望这是您想要的。

在进入包含addElement的循环之前,对列表进行排序?如果要从数据库中提取项目列表,在select上对其进行排序是一种很好的方法。这是一种严格的n^2顺序解决方案。我希望你能理解这种表现有多糟糕!::
 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 );
      }
 }