簡體   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