当前位置: 首页 > 知识库问答 >
问题:

JavaFX:禁用TableView多列排序

马渊
2023-03-14

我需要我的tableView使其所有列都可排序,但我不希望通过Shift单击列使其成为多列可排序。有什么办法可以防止这种情况发生吗?

共有1个答案

宁弘亮
2023-03-14

您可以向TableViewSortOrder属性(即ObservableList)添加一个侦听器,并检查此列表是否从不包含多个条目:

myTableView.getSortOrder().addListener((ListChangeListener.Change<? extends TableColumn> c) -> {
    while (myTableView.getSortOrder().size() > 1) {
        myTableView.getSortOrder().remove(1);
    }
});

但是,请注意,这种方法会使所有后续侦听器的change对象无效。因此,如果SortOrder属性有其他侦听器,则可能需要使用以下方法:

myTableView.setOnSort(sortEvent -> {
    while (myTableView.getSortOrder().size() > 1) {
        myTableView.getSortOrder().remove(1);
    }
});
 类似资料:
  • 我有一个表视图,它有一个附加到它的自定义类对象的可观察列表(类类型:SalesInvoiceNetSale)。数据都在表中显示良好。可观察列表中的最后一项是总计行(类类型:SalesInvoiceNetSaleTotal,它扩展了SalesInvoiceNetSale类)。我只是希望如果用户尝试按列对表进行排序,我的表不会对数组中的最后一条记录进行排序。我发现了另一个帖子,几乎是在问如何做同样的事

  • 问题内容: JavaFX2的TableView具有“用户在运行时重新排序列”的功能。我想为我的应用程序中的一个特定表禁用此功能。 查看API文档,没有明显的API挂钩。但是,有-property。根据文档,它代表 属于此TableView的TableColumns。当用户重新排序TableView列时,此列表将更新以反映当前的视觉顺序。 希望我至少能够在发生更改后重置更改,所以我尝试添加一个侦听器

  • 我在禁用TableView中的行时遇到问题。我有一个包含三列的TableView。名称列、值列和复选框列。如果用户选中复选框,则应使用与选中行中的值相同的值禁用所有行。我尝试使用ReactFX2框架在禁用的属性和单元格之间创建绑定,但没有成功。有没有一个简单的方法来处理我的问题。这是我的代码: trafficvolume.class controller.class 我想禁用所有与所选行具有相同f

  • 我正在javafx tableview上工作,并创建了一个100,000行的表(三列一int二浮动)。 我有主动分拣功能。要插入新行,首先使用二进制搜索搜索索引,然后使用表插入索引。获取项目。添加(索引、元素); 但是每20毫秒增加一行,gui就有点没有响应。 我添加了table.setSseltionModel(null);它固定了我的GUI,所以它似乎是慢GUI背后的罪魁祸首。 但我还需要选择

  • 我有一个用SceneBuilder生成的TableView,所有列都是从其他视图导入的FXML,直到没有问题为止,但列没有填充宽度。 我试图用scene builder和FXML来解决这个问题,但没有运气,所有的大小都是计算出来的。 我尝试用一个change listener对其进行编码,它在每次窗口改变大小以适应列的大小时都会进行检查。 这样可以工作,并且列的大小调整到适当的宽度(基本上我得到了