Foros del Web » Programación para mayores de 30 ;) » Java »

problemas con el jtable

Estas en el tema de problemas con el jtable en el foro de Java en Foros del Web. Buenas. Tengo un problema a la hora de ejecutar una aplicación que contiene un jtable con DefaultTableModel. Los datos se introducen perfectamente y no me ...
  #1 (permalink)  
Antiguo 20/12/2007, 06:33
 
Fecha de Ingreso: diciembre-2007
Mensajes: 2
Antigüedad: 16 años, 4 meses
Puntos: 0
problemas con el jtable

Buenas.

Tengo un problema a la hora de ejecutar una aplicación que contiene un jtable con DefaultTableModel.
Los datos se introducen perfectamente y no me da ningún fallo al ejecutar, el problema es que las celdas de la tabla se pueden editar y eso no es algo que yo desee.
¿Hay alguna opción para que los datos de la tabla no se puedan cambiar (que el usuario sólo pueda consultarlos)?

Muchas gracias de antemano
  #2 (permalink)  
Antiguo 20/12/2007, 08:18
Avatar de TolaWare
Colaborador
 
Fecha de Ingreso: julio-2005
Mensajes: 4.352
Antigüedad: 18 años, 9 meses
Puntos: 24
Re: problemas con el jtable

La forma más fácil de hacer esto, es crear una clase que herede de DefaultTableModel, y que sobreescribas el método isCellEditable().

Por ejemplo:

Código:
public class MyDefaultTableModel extends javax.swing.table.DefaultTableModel {

    public boolean isCellEditable(int rowIndex, int columnIndex) {
        return false;
    }

}
De esa manera, ninguna celda será editable.

Si quieres algo más genérico, podrías colocarle un atributo a la clase de tipo vector de boolean y que según la columna que te pregunten si es editable, respondas true o flase:

Código:
public class MyDefaultTableModel extends javax.swing.table.DefaultTableModel {

    private boolean esEditable[];

    public boolean setEsEditable(boolean[] editables) {
        this.esEditable = editables;
    }

    public boolean isCellEditable(int rowIndex, int columnIndex) {
        return esEditable[columnIndex];
    }

}
Para usar esa clase simplemente cuando creas una instancia del MyDefaultTableModel, le asignas qué columnas querés que sean editables: por ejemplo:

Código:
MyDefaultTableModel modelo = new MyDefaultTableModel();
modelo.setEsEditable(new boolean[] {true,true,false});
Con ese ejemplo, harías que las 2 primeras columnas sean editables y la tercera no.
  #3 (permalink)  
Antiguo 20/12/2007, 09:42
 
Fecha de Ingreso: diciembre-2007
Mensajes: 2
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: problemas con el jtable

Muchas gracias por tu ayuda, me ha servido de mucho
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:11.