是否可以在添加排序程序后在JTable上禁用手动排序?所以我有一个JTable,它附加了以下排序器(基本上是在表初始化时按第3列排序):
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);这很好用,但是用户仍然可以单击表中的列标题并按任何列排序,这是我想禁用的。这个是可能的吗?
发布于 2014-01-03 20:22:45
您可以使用TableRowSorter的setSortable方法,如下所示:
sorter.setSortable(0, false); 使第0列不可排序。您可以根据需要将其应用于列。
发布于 2015-09-29 21:39:27
或者,您可以像这样设置可排序列和不可排序列:
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);发布于 2019-01-13 13:58:37
我最近遇到了同样的问题,并找到了这个问题的完美解决方案。可以简单地禁用TableHeader。
jTable.getTableHeader().setEnabled(false);这样,排序在任何列上都能完美地工作,但是通过单击列标题阻止了手动排序。
希望这篇文章能帮助将来想要看一看它的用户。
https://stackoverflow.com/questions/20903136
复制相似问题