我是第一次使用 jtable。如何在执行操作后无法再次选择 jtable 中的特定行。我尝试setRowSelectionAllowed(boolean)
了方法,但它适用于所有行。
问问题
212 次
1 回答
1
将表选择模型设置为不允许选择禁止行的列表选择模型:
class RestrictedSelector extends DefaultListSelectionModel {
HashSet<Integer> forbiddenRows = new HashSet<Integer>();
@Override
public void addSelectionInterval(int index0, int index1) {
for (int row = index0; row <= index1; row++) {
if (forbiddenRows.contains(row)) {
// You can also have more complex code to select still
// valid rows here.
return;
}
}
}
// Implement these in the same spirit:
public void insertIndexInterval(int index0, int index1)
...
public void setSelectionInterval(int index0, int index1)
...
public void setLeadSelectionIndex(int leadIndex)
...
// and others, see below.
}
在此处检查所有必须重写的方法。
现在:
RestrictedSelector selector = new RestrictedSelector();
selector.forbiddenRows.add(NOT_THIS_ROW_1);
selector.forbiddenRows.add(NOT_THIS_ROW_2);
myTable.setSelectionModel(selector);
如果您的表格行是可排序的,您可能还需要使用convertRowIndexToModel
并且convertRowIndexToView
可能是模型中的行号,而不是表格中的行号,必须禁止选择。
于 2013-03-23T11:34:30.237 回答