Java 向TableColumn添加自定义排序算法
我的问题是: 为Java 向TableColumn添加自定义排序算法,java,sorting,javafx,tableview,Java,Sorting,Javafx,Tableview,我的问题是: 为表格列的默认排序设置自定义排序算法 背景: 作为一个示例列,我想使用一个列,该列将IPv4地址表示为字符串。因此,默认排序是字典排序(1.1.1.1、1.1.1.10、1.1.1.2)。但是我想要一个数字排序(1.1.1.1,1.1.1.2,1.1.1.10) 排序算法不是问题所在。我可以使用按钮触发此排序,并且表视图中的显示是正确的。但我想做的是单击列标题,从而调用我的排序算法 一般条件: 表中的数据位于可观察列表,该列表包装在分类列表中 我现在的问题是:如何实现这一点?您需要
表格列
的默认排序设置自定义排序算法
背景:
作为一个示例列,我想使用一个列,该列将IPv4地址表示为字符串
。因此,默认排序是字典排序(1.1.1.1、1.1.1.10、1.1.1.2)。但是我想要一个数字排序(1.1.1.1,1.1.1.2,1.1.1.10)
排序算法不是问题所在。我可以使用按钮
触发此排序,并且表视图
中的显示是正确的。但我想做的是单击列标题,从而调用我的排序算法
一般条件:
表中的数据位于可观察列表
,该列表包装在分类列表
中
我现在的问题是:如何实现这一点?您需要绑定比较器。单击列标题时,将使用列的比较器,如果再次单击,将使用该比较器的相反顺序。如果使用的是
SortedList
,并且每列都有不同的比较器,请将列表的比较器属性绑定到表的比较器属性。这样,当您单击标题时,也会通知您的列表,并更新您的数据:
columnA.setComparator(比较器1);
B列。设置比较器(比较器2);
列C.设置比较器(比较器3);
ObservableList items=FXCollections.observableArrayList();
SortedList SortedList=新分拣列表(项目);
sortedList.comparatorProperty().bind(tableView.comparatorProperty());
tableView.setItems(分类列表);
y您可以通过指定自定义比较器来确定排序顺序,但不能使用您提到的类型更改排序算法。可能最方便的方法是使用,它不需要在场景中放置额外的控件,只需使用列标题进行排序。谢谢。我会尽快尝试。这就是解决方案!谢谢。您只需阅读TableColumn/Base和TableView的api文档就可以找到它。。只需说;)