我确实有一个带有不同值的组合框,比如" FT001“、" FT002”和"FT003“,问题是如果我在FT001之前添加FT002,那么"FT002”总是排在第一位。
现在我正在寻找一种方法,它将按字母表进行排序。
我使用下面的代码来填充combobox:
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。
如果你们需要更多的信息来帮助我,请问:)
注:我是荷兰人,所以如果这里有荷兰人,我会比英语更懂荷兰语,谢谢。
发布于 2013-11-08 21:23:37
DefaultComboBoxModel.addElement(Object):在模型的末尾添加一项。因此,您正在使用的数组列表可以在使用model.addElement(Object)函数添加到model之前进行排序。您可以使用比较器对praktijkVerzameling ArrayList进行排序。例如,假设在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;发布于 2013-11-08 21:41:13
删除此行:
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 );
}
}希望这就是你想要的。
https://stackoverflow.com/questions/19859911
复制相似问题