[英]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.