简体   繁体   English

JavaFX:禁用 TableView 列中的默认排序

[英]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的表列时,它将从ascendingdescendingdefault (无箭头)交替。 How do I make it toggle between just ascending and descending ?我如何让它在ascendingdescending之间切换?

I meddled with many properties from the TableView and TableColumn and I found my own solution.我处理了TableViewTableColumn许多属性,然后找到了自己的解决方案。 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM