标签: rowsorter

行筛选器在单元更新事件上无法正常工作

在共享表模型示例中工作我意识到如果我们将行过滤器附加到表的行分类器,则此过滤器对单元更新事件没有任何影响.根据RowSorter API:

RowSorter需要引用诸如TableModel或的模型的具体实现ListModel.视图类(如JTableJList)也将具有对模型的引用.为避免排序依赖项,RowSorter实现不应在模型上安装侦听器.相反,视图类将RowSorter在模型更改时调用.例如,如果在TableModel JTable调用中更新了行rowsUpdated.当模型的变化,该视图可以调用到任何下列方法之一:modelStructureChanged, allRowsChanged,rowsInserted,rowsDeletedrowsUpdated.

因此,据我理解这一段,单元更新是行更新的特殊情况,因此rowsUpdated应该调用并相应地进行行筛选.

为了说明我在说什么,请考虑这个简单的过滤器:

private void applyFilter() {
    DefaultRowSorter sorter = (DefaultRowSorter)table.getRowSorter();
    sorter.setRowFilter(new RowFilter() {
        @Override
        public boolean include(RowFilter.Entry entry) {
            Boolean value = (Boolean)entry.getValue(2);
            return value == null || value;
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

在这里,第三列预期是一个Booleanentry(行)具有被包括如果电池值是nulltrue.如果我编辑放置在第三列的单元格并将其值设置为,false那么我希望该行只是从视图中"消失".但是,为了实现这一点,我必须再次设置一个新的过滤器,因为它似乎不能"自动"工作.

TableModelListener按如下方式附加到模型,我可以在单元格编辑上看到更新事件: …

java swing jtable rowfilter rowsorter

7
推荐指数
1
解决办法
2171
查看次数

按特定数组的顺序对其他数组进行排序?

我有一堆这种形式的数组:

var myRows = [
    [{idx: 0, val: 90}, {idx: 1, val: 75}, {idx: 2, val: 35}],
    [{idx: 0, val: 50}, {idx: 1, val: 17}, {idx: 2, val: 95}],
    [{idx: 0, val: 10}, {idx: 1, val: 24}, {idx: 2, val: 80}]
  // ...
];
Run Code Online (Sandbox Code Playgroud)

让我们说我想按顺序排序第一行val,所以它变成:

[{idx: 2, val: 35}, {idx: 1, val: 75}, {idx: 0, val: 90}]
Run Code Online (Sandbox Code Playgroud)

有没有一种简单的方法来对剩余的数组进行排序,以便它们的顺序与idx排序的第一行的顺序相匹配?

myArrays = [
    [{idx: 2, val: 35}, {idx: 1, val: 75}, {idx: 0, val: 90}]
  , [{idx: 2, …
Run Code Online (Sandbox Code Playgroud)

javascript arrays sorting rowsorter

5
推荐指数
1
解决办法
121
查看次数

我无法对列进行排序

我有一个网格,但我只想要两列可选的排序,就像我那样做?

  RowSorter newSorter = new TableRowSorter(table.getModel());
        newSorter.setSortKeys(sortKeys);
        table.setRowSorter(newSorter);
Run Code Online (Sandbox Code Playgroud)

我用过这个

java swing jtable rowsorter

2
推荐指数
1
解决办法
126
查看次数

使用JTable的默认列分类器对整数进行排序?

我目前在JTable上使用以下方法来对列进行自动排序

table.setAutoCreateRowSorter(true);
Run Code Online (Sandbox Code Playgroud)

这当前允许我单击每个标题,相应的列将对任何带字母的内容进行排序.当它试图对具有整数的列进行排序时,它正在搞乱.它似乎是一次排序每个数字而不是按实际数字排序.例如,它会说8大于100,因为8大于1.有什么方法可以覆盖这种行为吗?

java swing numbers jtable rowsorter

1
推荐指数
1
解决办法
1382
查看次数

如何重置 JTable 列箭头

我正在为我的 JTable 使用可排序的列:

table.setAutoCreateRowSorter(true);
Run Code Online (Sandbox Code Playgroud)

问题是在用户单击列标题后无法删除箭头。即使我删除了表中的所有行。

我试图做相反的事情,但没有奏效:

table.setAutoCreateRowSorter(false);
Run Code Online (Sandbox Code Playgroud)

java swing jtable rowsorter

1
推荐指数
1
解决办法
32
查看次数

标签 统计

rowsorter ×5

java ×4

jtable ×4

swing ×4

arrays ×1

javascript ×1

numbers ×1

rowfilter ×1

sorting ×1