我有一个多行的JTable,每一行都是通过散点图上的Point显示的。我要做的是当在散点图上选择给定点时,我必须将此选择与JTable中相应行的选择相关联。
我有一个代表的Integer,我必须强调哪一行。
我尝试的是:
JTable table = new JTable();
...
...// a bit of code where I have populated the table
...
table.setRowSelectionInterval(index1,index2);
所以这里的问题是这个方法选择给定范围内的所有行[index1,index2]。我想选择例如行1,15,28,188等。
你是怎么做到的?
答案 0 :(得分:11)
要仅选择一行,请将其作为开始和结束索引传递:
table.setRowSelectionInterval(18, 18);
或者,如果要选择多个非连续索引:
ListSelectionModel model = table.getSelectionModel();
model.clearSelection();
model.addSelectionInterval(1, 1);
model.addSelectionInterval(18, 18);
model.addSelectionInterval(23, 23);
或者,您可能会发现实现自己的ListSelectionModel
子类并使用它来跟踪表和散点图上的选择是一个更清晰的解决方案,而不是监听散点图并强制表匹配。
答案 1 :(得分:3)
它也适用于不使用ListSelectionModel:
table.clearSelection();
table.addRowSelectionInterval(1, 1);
table.addRowSelectionInterval(15, 15);
table.addRowSelectionInterval(28, 28);
...
只是不要调用setRowSelectionInterval,因为它总是先清除当前选择。
答案 2 :(得分:1)
无法通过一个方法调用设置随机选择,您需要多个才能执行此类选择
table.setRowSelectionInterval(1, 1);
table.addRowSelectionInterval(15, 15);
table.setRowSelectionInterval(28, 28);
table.addRowSelectionInterval(188 , 188 );
等等......
答案 3 :(得分:1)
以下是实现此目的的通用方法:
public static void setSelectedRows(JTable table, int[] rows)
{
ListSelectionModel model = table.getSelectionModel();
model.clearSelection();
for (int row : rows)
{
model.addSelectionInterval(row, row);
}
}