首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在JTable上禁用列标题排序

在JTable上禁用列标题排序
EN

Stack Overflow用户
提问于 2014-01-03 19:58:05
回答 4查看 13.5K关注 0票数 4

是否可以在添加排序程序后在JTable上禁用手动排序?所以我有一个JTable,它附加了以下排序器(基本上是在表初始化时按第3列排序):

代码语言:javascript
复制
JTable jTable = new JTable();
RowSorter<TableModel> sorter = new TableRowSorter<TableModel>(jTable.getModel());
List<RowSorter.SortKey> sortKeys = new ArrayList<RowSorter.SortKey>();
sortKeys.add(new RowSorter.SortKey(3, SortOrder.DESCENDING));
sorter.setSortKeys(sortKeys); 
jTable.setRowSorter(sorter);

这很好用,但是用户仍然可以单击表中的列标题并按任何列排序,这是我想禁用的。这个是可能的吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-01-03 20:22:45

您可以使用TableRowSortersetSortable方法,如下所示:

代码语言:javascript
复制
sorter.setSortable(0, false); 

使第0列不可排序。您可以根据需要将其应用于列。

票数 15
EN

Stack Overflow用户

发布于 2015-09-29 21:39:27

或者,您可以像这样设置可排序列和不可排序列:

代码语言:javascript
复制
TableRowSorter<TableModel> sorter = new TableRowSorter<TableModel>(table.getModel()) {
    @Override
    public boolean isSortable(int column) {
        if(column < 2)
            return true;
        else 
            return false;
    };
};
table.setRowSorter(sorter);
票数 6
EN

Stack Overflow用户

发布于 2019-01-13 13:58:37

我最近遇到了同样的问题,并找到了这个问题的完美解决方案。可以简单地禁用TableHeader

代码语言:javascript
复制
jTable.getTableHeader().setEnabled(false);

这样,排序在任何列上都能完美地工作,但是通过单击列标题阻止了手动排序

希望这篇文章能帮助将来想要看一看它的用户。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20903136

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档