Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JAVA fx排序组合框值_Java_Mysql_Combobox_Javafx - Fatal编程技术网

JAVA fx排序组合框值

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&

我有一个组合框cboTEST,里面有值,例如:

  • U7A
  • U4B
  • U6C
  • U1Z
  • U7B
第一个字母总是“U”

我想先按第二个数字对组合框排序,最后按字母顺序排序:

解决方案结果:

  • U1Z
  • U4B
  • U6C
  • U7A
  • U7B
  • U9R
我该怎么做

编辑: 这是我的方法,我用数据库select语句中的值填充组合框:

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); 
           }
    };
}