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

时间:2015-03-14 03:27:12

标签: java swing user-interface jtable

我有一个带有7列的JTable,其中第6列是布尔值(复选框)。我想只有在选中第6列中的布尔值时才能使第7列的单元格变为可编辑。例如,如果选中(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列的值。


更新 w / Guido的输入:代码有效,但是当我点击第7列的不可编辑单元格时(无论是否设置为可编辑单元格),我得到NullPointerException。 / p>
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at ManagerDisplay$1.isCellEditable(ManagerDisplay.java:82)
    at javax.swing.JTable.editCellAt(JTable.java:3500)

1 个答案:

答案 0 :(得分:2)

如果我理解正确,你只需要这个:

@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; 
}