JAVA fx排序组合框值
我有一个组合框cboTEST,里面有值,例如:JAVA fx排序组合框值,java,mysql,combobox,javafx,Java,Mysql,Combobox,Javafx,我有一个组合框cboTEST,里面有值,例如: U7A U4B U6C U1Z U7B 第一个字母总是“U” 我想先按第二个数字对组合框排序,最后按字母顺序排序: 解决方案结果: U1Z U4B U6C U7A U7B U9R 我该怎么做 编辑: 这是我的方法,我用数据库select语句中的值填充组合框: private void getData() { DataDB db = new DataDB(); try{ ArrayList&
- U7A
- U4B
- U6C
- U1Z
- U7B
- U1Z
- U4B
- U6C
- U7A
- U7B
- U9R
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) {
}
}
private void getData(){
DataDB=新的DataDB();
试一试{
ArrayList dataList=db.searchData();//从..中选择*。。
用于(数据包数据:数据列表){
字符串名称=data.getName();
cboplogen.getItems().add(名称);
}
}捕获(应用程序异常ae){
}捕获(DBAE异常){
}
}
将项目设置到组合框时,确保它们已排序。
如果要比较的字符串使用Java中字符串的自然比较(如您的示例所示),那么您可以使用(如ItachiUchiha的注释中所述):
}
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);
}
};
}
专用静态比较器getComparator(){
返回新的比较器(){
@凌驾
公共整数比较(数据包o1、数据包o2){
字符串名称=o1.getName();
字符串名称2=o2.getName();
//排序是示例中的自然字符串排序
返回name.compareTo(name2);
}
};
}
在列表中使用您将用作组合框的项目,应该可以解决您的问题。我添加了将数据放入组合框的方法。你能看一下吗?非常感谢!这是100%正确!非常感谢。不客气。你介意投票支持这个答案吗:)
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) {
}
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);
}
};
}