Java JTable - 只能编辑一列

use*_*479 16 java swing jtable

我想知道如何使JTable的一列可编辑,其他列必须是不可编辑的.

我已经覆盖了isCellEditable()但是这会将每个单元格更改为不可编辑.Thnx提前.

mKo*_*bel 32

您可以设置,如果是isEditable用于TableColumnTableColumn and TableCell

@Override
public boolean isCellEditable(int row, int col) {
     switch (col) {
         case 0:
         case 1:
             return true;
         default:
             return false;
      }
}
Run Code Online (Sandbox Code Playgroud)

  • 错误 - a)在任何地方都没有isEditable方法b)TableColumn根本没有可编辑性的概念c)TableCell不存在.正确的是_isCellEditable_在TableModel实现上或在JTable上 - -1用于邋iness (12认同)

Eri*_*icR 20

覆盖表模型

isCellEditable(int rowIndex, int columnIndex) 有两个参数,只为你想要的列返回true?

public boolean isCellEditable(int rowIndex, int columnIndex){
return columnIndex == 0; //Or whatever column index you want to be editable
}
Run Code Online (Sandbox Code Playgroud)


小智 11

这将为第3列和第8列设置editable true,为其他列设置false.

DefaultTableModel model = new DefaultTableModel() {

            boolean[] canEdit = new boolean[]{
                    false, false, true, false, false,false,false, true
            };

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit[columnIndex];
            }
};
Run Code Online (Sandbox Code Playgroud)


kle*_*tra 6

SwingX项目的JXTable/TableColumnExt具有api来配置每个表和每列的可编辑性

 // make the table completely read-only
 xTable.setEditable(false);
 // make a column read-only
 xTable.getColumnExt(index).setEditable(false);
Run Code Online (Sandbox Code Playgroud)

请注意,与model.isCellEditable返回的可编辑性相比,只能缩小可编辑性.也就是说,您可以将可编辑单元格设为只读,但不能反过来