根据复选框 JTable 使特定单元格可编辑

Make a specific cell editable based on checkbox JTable

我有一个包含 7 列的 JTable,其中第 6 列是布尔值(复选框)。我想让第 7 列的单元格仅在选中第 6 列中的布尔值时才变为可编辑。例如,如果 (2,6) 被选中,我希望只有 (2,7) 变得可编辑。

以下代码使整行都可编辑(但我只希望单元格位于布尔值右侧):

@Override
public boolean isCellEditable(int row, int col) {
    if (col == 5)   // 0-indexed (6th col)
        return true;
    else
        return ((Boolean) getValueAt(row, 5)).booleanValue();
}

之后,我想要一种快速获取所有选中行的方法,以便我可以获得每行第 7 列的值。


Update w/ Guido 的输入:代码有效,但是当我单击第 7 列的不可编辑单元格时出现 NullPointerException(无论是否设置为可编辑或不)。

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at ManagerDisplay.isCellEditable(ManagerDisplay.java:82)
    at javax.swing.JTable.editCellAt(JTable.java:3500)

如果我没理解错的话,你只需要这个:

@Override
public boolean isCellEditable(int row, int col) {
    if (col == 5)   // 0-indexed (6th col)
        return true;
    else if (col == 6) // 7th col
        return ((Boolean) getValueAt(row, 5)).booleanValue();
    else                // every other column
        return false; 
}