[英]JavaFX: Disabling default sort in TableView columns
When I click on a table column in a TableView
, it will alternate from ascending
, descending
and default
(no arrow).当我单击
TableView
的表列时,它将从ascending
、 descending
和default
(无箭头)交替。 How do I make it toggle between just ascending
and descending
?我如何让它在
ascending
和descending
之间切换?
I meddled with many properties from the TableView
and TableColumn
and I found my own solution.我处理了
TableView
和TableColumn
许多属性,然后找到了自己的解决方案。 It is definitely not elegant, and is also not thread-safe, but at least it works, and it's simple.它绝对不优雅,也不是线程安全的,但至少它有效,而且很简单。
public static final <T> void disableColumnUnsortedOnClick(TableView<T> tableView)
{
tableView.getSortOrder().addListener(new ListChangeListener<TableColumn<T, ?>>()
{
@Override
public void onChanged(
javafx.collections.ListChangeListener.Change<? extends TableColumn<T, ?>> c)
{
while (c.next())
{
if (c.wasRemoved() && c.getRemovedSize() == 1 && !c.wasAdded())
{
final TableColumn<T, ?> removedColumn = c.getRemoved().get(0);
removedColumn.getTableView().getSortOrder().add(removedColumn);
removedColumn.setSortType(SortType.ASCENDING);
}
}
}
});
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.