La Web del Programador: Comunidad de Programadores
 
    Pregunta:  53732 - DESHABILITAR COLUMNA EN SWING
Autor:  Javier Bautista
Buenos días.

Tengo una tabla en swing que tiene una columna no editable. Eso lo he conseguido con el método isCellEditable, poniendole el índice de esa columna a false.

Pues bien, quiero que al pulsar un botón habilite esa columna, pero no veo la manera de poder implementar un método que lo haga. Alguien tiene alguna idea??

Muchas Gracias

  Respuesta:  Mat Lop
Hola, Javier.
Lo podes hacer creando un TableModel propio. Agregando al modelo una matriz que lleve cuenta de cuales columnas son editables y cuales no, y sobrecargando el metodo isCellEditable(fila, columna) para que consulte esta matriz.
Basicamente quedaría como el codigo siguiente :
public class TableModelPropio extends javax.swing.table.DefaultTableModel

{
// MATRIZ [COLUMNA][FILA], TRUE SI LA CELDA ES EDITABLE
private boolean[][] celdaEditable;

@Override
public boolean isCellEditable(int fila, int columna)
{
boolean editable = this.celdaEditable[ columna ][ fila ];
return editable;
}

public void setCeldaEditable(int columna, int fila, boolean editable)
{
this.celdaEditable[ columna ][ fila ] = editable;
}

public void setColumnaEditable(int columna, boolean editable)
{
int i = 0;
int cantidadFilas = this.getRowCount();
for(i=0; i this.celdaEditable[ columna ][ i ] = editable;
}
}

Espero que te haya servido.