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

Como hacer JTable con checkboxs

Estas en el tema de Como hacer JTable con checkboxs en el foro de Java en Foros del Web. Hola a todos, a ver si pueden ayudarme, he leido muchas cosas y no lo termino de enteneder. Tengo una JFrame, dentro un JPanel, en ...
  #1 (permalink)  
Antiguo 18/01/2012, 11:52
Usuario no validado
 
Fecha de Ingreso: agosto-2007
Mensajes: 141
Antigüedad: 16 años, 7 meses
Puntos: 1
Pregunta Como hacer JTable con checkboxs

Hola a todos, a ver si pueden ayudarme, he leido muchas cosas y no lo termino de enteneder.
Tengo una JFrame, dentro un JPanel, en el que hay un JTable que listo personas.
Dni nombre apellido activo


el campo activo en la bd es un checkbox, asique yo querria que sea un Check Box

por fuera del JTable, hay un boton "Eliminar", que al apretarlo, elimina todas las personas que hayan sido selecionada de la JTabla,
Como hago esto? DefaultTableModel AbstarctTableModel dirctamente al JTable?
y como manejo los eventos en los diferentes campos, en este caso los check.
Bueno esoro me ayuden gracias
  #2 (permalink)  
Antiguo 18/01/2012, 12:55
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 6 meses
Puntos: 454
Respuesta: Como hacer JTable con checkboxs

La forma más fácil es que heredes de DefaultTableModel. Sobreescribe el método getColummClass() de forma que en la columna que quieres un checkbox devuelva Boolean.class

Código java:
Ver original
  1. public Class getColumnClass (int columnIndex) {
  2.     if (es columna de checkbox) {
  3.          return Boolean.class;
  4.     } else {
  5.          return super.getColumnClasss(columnIndex);
  6.     }
  7. }

por supuesto, debe llamar a jtable.setModel() para pasarle tu clase hija de DefaultTableModel y debes meter datos Boolean en esa columna.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 19/01/2012, 14:08
Usuario no validado
 
Fecha de Ingreso: agosto-2007
Mensajes: 141
Antigüedad: 16 años, 7 meses
Puntos: 1
Respuesta: Como hacer JTable con checkboxs

grosooo, lo solucione así
Código:
class MyTableModelN extends DefaultTableModel{
        @Override
        public Class getColumnClass (int columnIndex) {
            if (columnIndex==2){
                return Boolean.class;
            }else {
                            return super.getColumnClass(columnIndex);
            }     
          
        }     
    }
columnIndex==2, 2 es la ubicacion de los checks en la tabla, osea la 3er columna.
Ahora como hago para al hacer click en un boton eliminar, que tengo en el panel donde esta el JTable, para eliminar los seleccionados.
Osea yo tengo ya un metodo cargarTabla, que carga la tabla desde la BD, Ahora yo deberoa de alguna forma saber que checks estan seleccionados, eliminar y llamar denuevo a cargarTabla.
COMO SE CUALES CHECKS ESTAN SELECCIONADOS, Y COMO HAGO PARA QUE LOS CHECKS TENGAN EL ID DE LA PERSONA, PARA PODER ELIMINARLO DE LA bd.
Gracias
  #4 (permalink)  
Antiguo 19/01/2012, 15:27
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 6 meses
Puntos: 454
Respuesta: Como hacer JTable con checkboxs

Haz un bucle y vete llamando en tu modelo MyTableModelN al método getValueAt(fila, 2) y te devolverá un Object que en realidad es un Boolean que te indicará si está chequeado o no el check.

Código java:
Ver original
  1. for (int i=0; i<modelo.getRowCount(); i++) {
  2.       if (((Boolean)modelo.getValueAt(i, 2).equals(Boolean.TRUE)) {
  3.               Borrar fila i de BD
  4.       }
  5. }

He puesto los métodos un poco de memoria, tendrás que revisar sin la sintaxis es la correcta.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #5 (permalink)  
Antiguo 19/01/2012, 19:45
 
Fecha de Ingreso: septiembre-2010
Ubicación: Caracas
Mensajes: 83
Antigüedad: 13 años, 7 meses
Puntos: 6
Respuesta: Como hacer JTable con checkboxs

si estas mostrando el id de BD, puedes ir metiendolos en un arraylist o vector y despues lo mandas a un metodo para que borre cada uno.
yo recomiendo que en vez de colocar un booleano editable, permitas hacer multiples selecciones con shift y control (poniendo una pequeña leyenda) y asi retornas de una vez todos los getSelectedRows() (creo q retorna una coleccion de los indices seleccionados del modelo)

Cita:
Iniciado por chuidiang Ver Mensaje
Haz un bucle y vete llamando en tu modelo MyTableModelN al método getValueAt(fila, 2) y te devolverá un Object que en realidad es un Boolean que te indicará si está chequeado o no el check.

Código java:
Ver original
  1. for (int i=0; i<modelo.getRowCount(); i++) {
  2.       if (((Boolean)modelo.getValueAt(i, 2).equals(Boolean.TRUE)) {
  3.               Borrar fila i de BD
  4.       }
  5. }

He puesto los métodos un poco de memoria, tendrás que revisar sin la sintaxis es la correcta.

Se bueno.
  #6 (permalink)  
Antiguo 02/02/2012, 07:13
Usuario no validado
 
Fecha de Ingreso: agosto-2007
Mensajes: 141
Antigüedad: 16 años, 7 meses
Puntos: 1
Respuesta: Como hacer JTable con checkboxs

Hola, mil gracias, lo solucione asi
Código:
 int p=0;
           int cantidad=modelo.getRowCount();
           int cantsel=0;
           int confirmado = JOptionPane.showConfirmDialog(null, "¿Está seguro de eliminar estas Marcas?","Eliminar MArca",JOptionPane.YES_NO_OPTION);
           if (JOptionPane.YES_OPTION == confirmado==true) {	
                for (int i = cantidad -1; i >= 0; i--){
                    if (((Boolean)modelo.getValueAt(i, 2).equals(Boolean.TRUE))) {
                         cantsel++;
                         Marca m=new Marca();

                         int valor= (Integer) JTableListado.getModel().getValueAt(i,0);
                         modelo.removeRow(i);
                         m.setIdMarca(valor);
                         unListadoMarcasModel.delete(m);
                    }  
                }
    }
           if (cantsel==0){
               JOptionPane.showMessageDialog(this.unListadoMarcasJFrameView, "Debe seleccionar una Marca", "Error", JOptionPane.ERROR_MESSAGE);
           }
no use el getSelectedRows porque lei tarde la parte esa.
ja, pero bueno, esta es una solucion...
grcias

Etiquetas: jtable
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 15:54.