1

我确实有一个具有不同值的组合框,例如“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:我是荷兰人,所以如果这里有人荷兰语,我会比英语更好地理解荷兰语,谢谢。

4

2 回答 2

0

DefaultComboBoxModel.addElement(Object):在模型末尾添加一个项目。因此,您正在使用的数组列表可以在添加到modelusingmodel.addElement(Object)函数之前进行排序。您可以使用比较器对praktijkVerzameling ArrayList. 例如, assuminpraktijkVerzameling是 Class Type 的数组列表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;
于 2013-11-08T13:23:36.873 回答
0

删除此行:

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

希望这是你想要的。

于 2013-11-08T13:41:12.543 回答