Java 基于复选框JTable使特定单元格可编辑

Java 基于复选框JTable使特定单元格可编辑,java,swing,user-interface,jtable,Java,Swing,User Interface,Jtable,我有一个包含7列的JTable,其中第6列是布尔值(复选框)。我想使第7列的单元格仅在选中第6列中的布尔值时才可编辑。例如,如果选中(2,6),我只希望(2,7)变为可编辑 以下代码使整行可编辑(但我只希望布尔值右侧的单元格): 之后,我想要一种快速获取所有选中行的方法,这样我就可以为每一行获取第7列的值 Updatew/Guido的输入:代码可以工作,但当我单击第7列的不可编辑单元格时,我会得到NullPointerException(无论其中一个设置是否可编辑) 如果我理解正确,您只需要:

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

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

之后,我想要一种快速获取所有选中行的方法,这样我就可以为每一行获取第7列的值


Updatew/Guido的输入:代码可以工作,但当我单击第7列的不可编辑单元格时,我会得到NullPointerException(无论其中一个设置是否可编辑)


如果我理解正确,您只需要:

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

非常感谢。工作如期!当我单击不可编辑(第7列)列时,我得到了NullPointerException,完全错误已添加到原始帖子中。@Ali:这是一个新问题,您应该接受Guido的答案,向上投票,然后针对你的新问题问一个新问题。@Ali:对于下一个问题,我们需要的最重要的信息是异常的相关stacktrace和导致异常的行的一些标识,stacktrace会告诉你一些信息。换言之,你必须展示令人不快的代码,一些你没有做的事情,但是再一次,不要在这里显示——问一个新问题,然后在那里显示。@HovercraftFullOfEels我应该等待获得所有选中行的解决方案,还是应该在另一个问题中也这样做?@Ali关于收集所有行值的问题也应该有自己的帖子,但是,就目前而言,它可能会因为过于宽泛或不清楚而关闭;您需要提供详细信息,说明接下来要如何处理收集的值,以及一些代码片段以澄清上下文。
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at ManagerDisplay$1.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; 
}