6

我有一个包含多行的 JTable,每一行都通过散点图上的 Point 呈现。我要做的是,当在散点图上选择给定点时,我必须将此选择与 JTable 中相应行的选择相关联。

我有一个整数来表示,我必须突出显示哪一行。

我尝试的是:

    JTable table = new JTable();
...
...// a bit of code where I have populated the table
...
   table.setRowSelectionInterval(index1,index2);

所以这里的问题是这个方法选择给定范围[index1,index2]中的所有行。我想选择例如行 1,15,28,188 等。

你是怎样做的?

4

4 回答 4

14

要仅选择一行,请将其作为开始和结束索引传递:

table.setRowSelectionInterval(18, 18);

或者,如果要选择多个非连续索引:

ListSelectionModel model = table.getSelectionModel();
model.clearSelection();
model.addSelectionInterval(1, 1);
model.addSelectionInterval(18, 18);
model.addSelectionInterval(23, 23);

或者,您可能会发现实现自己的子类ListSelectionModel并使用它来跟踪表格和散点图上的选择是一种更简洁的解决方案,而不是听散点图并强制表格匹配。

于 2013-03-21T19:27:11.017 回答
3

它也可以在不使用 ListSelectionModel 的情况下工作:

table.clearSelection();
table.addRowSelectionInterval(1, 1);
table.addRowSelectionInterval(15, 15);
table.addRowSelectionInterval(28, 28);
...

只是不要调用 setRowSelectionInterval,因为它之前总是清除当前选择。

于 2013-08-12T07:32:41.130 回答
1

没有办法通过一个方法调用来设置随机选择,您需要多个方法来执行这种选择

table.setRowSelectionInterval(1, 1);
table.addRowSelectionInterval(15, 15);
table.setRowSelectionInterval(28, 28);
table.addRowSelectionInterval(188 , 188 );

等等....

于 2013-03-21T19:31:19.520 回答
1

这是实现此目的的通用方法:

public static void setSelectedRows(JTable table, int[] rows)
{
    ListSelectionModel model = table.getSelectionModel();
    model.clearSelection();

    for (int row : rows)
    {
        model.addSelectionInterval(row, row);
    }
}
于 2017-04-05T23:56:46.403 回答