Leyendo la observación de Kleopatra (su 2da vez sugirió echar un vistazo a javax.swing.JXTable, y ahora lo siento, no tenía una mira la primera vez :)) Te sugiero que sigas el enlace
Busqué una respuesta, y combiné varias respuestas a mi propia solución: (sin embargo, no es seguro para todas las soluciones, pero es comprensible e impulsado rápidamente, aunque recomiendo mirar el enlace de arriba)
Puede mantenerlo más flexible para establecer qué columna es editable o no más adelante, lo usé para ejemplo:
columnsEditable=new ArrayList<Integer>();
table=new JTable(new DefaultTableModel(){
@Override
public boolean isCellEditable(int row, int col) {
if(columnsEditable.isEmpty()){
return false;
}
if(columnsEditable.contains(new Integer(col))){
return true;
}
return false;
}
});
Y utilizado esta función para establecer editable o no:
public void setColumnEditable(int columnIndex,boolean editable){
if(editable){
if(!columnsEditable.contains(new Integer(columnIndex))){
columnsEditable.add(new Integer(columnIndex));
}
}else{
if(columnsEditable.contains(new Integer(columnIndex))){
columnsEditable.remove(new Integer(columnIndex));
}
}
}
Nota: por supuesto que tiene que definir columnsEditable y JTable tabla global en esta clase:
private JTable table;
private ArrayList<Integer> columnsEditable;
Nota 2 : de manera predeterminada, todas las columnas no son editables, pero ese es mi comportamiento deseado. Si desea otro elemento, puede agregar todas las columnas a columnas Editable o cambiar el comportamiento por completo (haga que las columnas ArrayListNonEditable en lugar). Con respecto a la observación de Kleopatra: es mejor no usar esta última sugerencia (pero depende del modelo de tabla utilizado y de lo que haces en el resto de tu programa).
incorrecto - a) no hay ningún método es editable en cualquier lugar b) TableColumn no tiene ninguna noción de editabilidad en absoluto c) TableCell no existe. Correcto sería _isCellEditable_ ya sea en la implementación de TableModel o en JTable - -1 para sloppiness – kleopatra