我有一个与 TreeView 关联的 TableView。每次选择 TreeView 中的一个节点时,都会用不同的数据刷新 TableView。
我可以对 TableView 中的任何列进行排序,只需按相应的列标题即可。这很好用。
但是 :当我在树 View 中选择不同的节点时,即使列标题一直显示为已排序。数据不是。
有没有办法在每次数据更改时以编程方式强制执行用户所做的排序顺序?
最佳答案
好的,我找到了方法。我会在这里总结一下,以防对其他人有用:
之前 您更新 TableView 的内容,您必须保存 sortcolum(如果有)和 sortType:
TableView rooms;
...
TableColumn sortcolumn = null;
SortType st = null;
if (rooms.getSortOrder().size()>0) {
sortcolumn = (TableColumn) rooms.getSortOrder().get(0);
st = sortcolumn.getSortType();
}
然后,完成更新后 TableView 中的数据,您必须恢复丢失的排序列状态并执行排序。
if (sortcolumn!=null) {
rooms.getSortOrder().add(sortcolumn);
sortcolumn.setSortType(st);
sortcolumn.setSortable(true); // This performs a sort
}
我没有考虑在排序中有多个列的可能性,但是使用这些信息很简单。
关于tableview - Javafx : Re-sorting a column in a TableView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11096353/