2013-03-21 38 views
5

我有一个有多行的JTable,每行都通过散点图上的Point来呈现。我必须做的是在散点图上选择给定点时,我必须将此选择与JTable中相应行的选择关联起来。Java Swing JTable以编程方式选择多行

我有一个Integer表示,我必须强调哪一行。

我想的是:

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

所以这里的问题是,这种方法选择在给定的范围[索引1,索引2]所有行。我想选择例如行1,15,28,188等。

你是如何做到的?

感谢, 安东

回答

11

仅选择一排,把它作为双方的开始和结束索引:

table.setRowSelectionInterval(18, 18); 

或者,如果你想选择多个不连续的指数:

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

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

+0

啊哈,这就是我刚才想,似乎工作正常,我:)谢谢您的回答! – 2013-03-21 19:31:56

1

没有办法设置一个随机选择了一个方法调用,你需要不止一个执行这种选择的

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

等等....

+0

@Jäbir在这最后一行之后将被选中。你需要使用'ListSelectionModel',如[post above](http://stackoverflow.com/a/15556376/1196670)中指出的那样, – 1ac0 2013-03-29 10:40:02

3

它还工作没有使用的ListSelectionModel:

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

只是不叫setRowSelectionInterval,因为它总是前清除当前的选择。

0

这里是实现这个泛型方法:

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

    for (int row : rows) 
    { 
     model.addSelectionInterval(row, row); 
    } 
}