如何在java中按字母顺序排列组合框?(使用Netbeans IDE 7.3)
我确实有一个组合框,具有不同的值,如FT001、FT002和FT003。 问题是,如果在FT001之前添加FT002,则FT002始终是第一个 现在我正在寻找一种方法,它将在alphabeth上对其进行排序 我使用以下代码填充组合框:如何在java中按字母顺序排列组合框?(使用Netbeans IDE 7.3),java,netbeans,combobox,sorted,Java,Netbeans,Combobox,Sorted,我确实有一个组合框,具有不同的值,如FT001、FT002和FT003。 问题是,如果在FT001之前添加FT002,则FT002始终是第一个 现在我正在寻找一种方法,它将在alphabeth上对其进行排序 我使用以下代码填充组合框: public DefaultComboBoxModel getPraktijkenLijst(){ DefaultComboBoxModel listModel = new DefaultComboBoxModel(); listModel.add
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.addElementObject:在模型末尾添加一项。因此,在使用model.addElementObject函数添加到模型之前,可以对正在使用的数组列表进行排序。可以使用比较器对praktijkVerzameling ArrayList进行排序。例如,assumin praktijkVerzameling是类类型Praktijk的数组列表:
删除此行:
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 );
}
}
希望这是您想要的。在进入包含addElement的循环之前,对列表进行排序?如果要从数据库中提取项目列表,在select上对其进行排序是一种很好的方法。这是一种严格的n^2顺序解决方案。我希望你能理解这种表现有多糟糕!::
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 );
}
}