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