[英]JAVA fx sorting combobox values
我有一個組合框cboTEST,其中包含值:
第一個字母始終為“ U”。
我想首先在第二個數字上排序我的組合框,最后按字母順序排序:
解決方案結果:
我怎樣才能做到這一點?
編輯:這是我的方法,其中我用數據庫選擇語句中的值填充組合框:
private void getData() {
DataDB db = new DataDB();
try{
ArrayList<DataBag> dataList= db.searchData(); //select * from ..
for(DataBag data : dataList) {
String name= data.getName();
cboPloegen.getItems().add(name);
}
} catch (ApplicationException ae) {
} catch (DBException ae) {
}
}
將項目設置為組合框時,請確保已對它們進行了排序。 如果要比較的字符串使用Java中的字符串的自然比較(如您的示例所示),則可以使用(如ItachiUchiha的注釋中所述):
ObservableList<String> list = ...;
Collections.sort(list);
cboTEST.setItems(list);
但是,如果要排序的項目未實現Comparable
或自然排序不符合您的需求,則必須使用Comparator
:
private void getData() {
DataDB db = new DataDB();
try{
ArrayList<DataBag> dataList= db.searchData(); //select * from ..
Collections.sort(dataList, getComparator());
for (DataBag data : dataList) {
String name= data.getName();
cboPloegen.getItems().add(name);
}
} catch (ApplicationException ae) {
} catch (DBException ae) {
}
}
getComparator()
方法應類似於
private static Comparator<DataBag> getComparator() {
return new Comparator<DataBag>() {
@Override
public int compare(DataBag o1, DataBag o2) {
String name = o1.getName();
String name2 = o2.getName();
// ordering is the natural String ordering in your example
return name.compareTo(name2);
}
};
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.