使用handler在javafx中基于列对数据进行排序
如何在不单击列标题的情况下调用排序函数 当我点击表格标题时,记录被排序。但是我想在不点击表格标题的情况下对记录进行排序。是否可以为列标题添加处理程序,如果可以,我需要调用什么处理程序。您可以简单地修改和使用 例子 元素类型 构建使用handler在javafx中基于列对数据进行排序,java,javafx,javafx-2,Java,Javafx,Javafx 2,如何在不单击列标题的情况下调用排序函数 当我点击表格标题时,记录被排序。但是我想在不点击表格标题的情况下对记录进行排序。是否可以为列标题添加处理程序,如果可以,我需要调用什么处理程序。您可以简单地修改和使用 例子 元素类型 构建TableView TableView tv=newtableview(FXCollections.observearraylist( 新元素(“a”、“a”), 新元素(“a”、“b”), 新元素(“b”、“a”), 新元素(“b”、“b”); TableColumn
TableView
TableView tv=newtableview(FXCollections.observearraylist(
新元素(“a”、“a”),
新元素(“a”、“b”),
新元素(“b”、“a”),
新元素(“b”、“b”);
TableColumn column1=新的TableColumn(“a”);
第1列:setCellValueFactory(新属性ValueFactory(“a”));
column1.setSortType(TableColumn.SortType.ASCENDING);
TableColumn column2=新的TableColumn(“b”);
第2列:setCellValueFactory(新属性ValueFactory(“b”);
column1.setSortType(TableColumn.SortType.DESCENDING);
tv.getColumns().setAll(第1列、第2列);
tv.getSortOrder().setAll(第1列、第2列);
//按钮在单击时反转列1的顺序
按钮btn=新按钮();
btn.setText(“反向列1”);
btn.setOnAction((ActionEvent事件)->{
column1.setSortType(相反(column1.getSortType());
});
...
私有静态TableColumn.SortType反向(TableColumn.SortType st){
返回TableColumn.SortType.values()[1-st.ordinal()];
}
如果要对非点击列标题触发的列进行排序,应触发排序的是什么?基于时间,是否应该对其进行排序?组合键。。。应该已经分类了。
public class Element {
private final String a;
private final String b;
public Element(String a, String b) {
this.a = a;
this.b = b;
}
public String getA() {
return a;
}
public String getB() {
return b;
}
}
TableView<Element> tv = new TableView<>(FXCollections.observableArrayList(
new Element("a", "a"),
new Element("a", "b"),
new Element("b", "a"),
new Element("b", "b")));
TableColumn<Element, String> column1 = new TableColumn<>("a");
column1.setCellValueFactory(new PropertyValueFactory<>("a"));
column1.setSortType(TableColumn.SortType.ASCENDING);
TableColumn<Element, String> column2 = new TableColumn<>("b");
column2.setCellValueFactory(new PropertyValueFactory<>("b"));
column1.setSortType(TableColumn.SortType.DESCENDING);
tv.getColumns().setAll(column1, column2);
tv.getSortOrder().setAll(column1, column2);
// Button reverses order of column1 on click
Button btn = new Button();
btn.setText("Reverse column 1");
btn.setOnAction((ActionEvent event) -> {
column1.setSortType(reverse(column1.getSortType()));
});
...
private static TableColumn.SortType reverse(TableColumn.SortType st) {
return TableColumn.SortType.values()[1-st.ordinal()];
}