Como poner JCheckBox en JTable Java NetBeans

Java

Muchas veces deseamos incluir componentes de selección en JTables, quizá parezca una labor muy difícil pero en realidad no es así veamos Como poner JCheckBox en JTable Java NetBeans, mediante un modelo:

Como poner JCheckBox en JTable Java NetBeans

Como poner JCheckBox en JTable Java NetBeans

Código

public static DefaultTableModel nombrequequieras;
 private void
 CrearModTablaPerm(){
 try {
 nombrequequieras = (new DefaultTableModel(
 null,
 new String [] {
 "Campo1",
 "Campo2", //checkbox
 "Campo3",
 "Campo4",
 "Campo5", //Nombre de
 los campos
 "Campo6",
 "Campo7",
 "Campo8"}){
 Class[] types = new Class [] {
 java.lang.String.class,
 java.lang.Boolean.class, //este es para el check
 java.lang.String.class,
 java.lang.String.class, //Tipos
 java.lang.String.class,
 java.lang.String.class,
 java.lang.String.class,
 java.lang.String.class};
 boolean[] canEdit = new boolean
 [] {
 false,
 true,
 false,
 false,
 false,
 false,
 false,
 false
 };
 @Override
 public Class getColumnClass(int
 columnIndex) {
 return types [columnIndex];
 }
 @Override
 public boolean
 isCellEditable(int rowIndex, int colIndex){
 return canEdit
 [colIndex];
 }
 });
 tabla.setModel(nombrequequieras);
 //estos son
 tamaños de las columnas no es requerido

tabla.getColumnModel().getColumn(0).setPreferredWidth(50);

tabla.getColumnModel().getColumn(0).setMaxWidth(50);
 } catch
 (Exception e) {

JOptionPane.showMessageDialog(null,e.toString()+"error");
 }
 }

Este tipo de acciones son muy importantes cuando necesitamos trabajar sobre los datos cargados en un JTable.

¡Suscríbete a mi canal, para acceder a más contenidos gratuitos!

2 comentarios

  1. YESID Contestar

    HOLA DAVID, quisiera hacerte una pregunta, y si esta a tu alcance me ayudes. soy nuevo en Java.
    tengo un tabla en mysql de usuarios y unos de sus campos es booleanos,definito como BIT(), en total son 5 campos, cuando lo graba en mysql el jcheckbox es true y queda como 1 la tabla, quiero mostrar los datos en una jtable, pero ese campo me lo muestra con “1”, la pregunta es la siguiente .¿ como hago que en la jtable no me muestre el numero 1 si no como un campo jcheckbox y se vea con un chulo ? agradezco cualquier ayuda posible.

    • Ivan David Lopez Autor de la entradaContestar

      Hola Yesid, pues es bastante sencillo, solo necesitas en el modelo establecer tu check así:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
        DefaultTableModel model;
          private void Modelo() {
              try {
                  model = (new DefaultTableModel(
                          null, new String[]{"check"}) {
                              Class[] types = new Class[]{
                                  java.lang.Boolean.class};
                              boolean[] canEdit = new boolean[]{
                                  true
                              };
                              @Override
                              public Class getColumnClass(int columnIndex) {
                                  return types[columnIndex];
                              }
                              @Override
                              public boolean isCellEditable(int rowIndex, int colIndex) {
                                  return canEdit[colIndex];
                              }
                          });
                  tabla.setModel(model);
              } catch (Exception e) {
                  JOptionPane.showMessageDialog(null, e.toString() + "error2");
              }
          }

      Luego nada mas llenas la tabla, aquí te pongo un ejemplo con un array, tu lo harás con los datos de tu bd, así:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      private void ejemplo() {
              ArrayList lista= new ArrayList<>();
              lista.add(true);
              lista.add(true);
              lista.add(false);
              lista.add(true);
              lista.add(true);
              lista.add(false);
              lista.add(false);
              Object O[] = null;
              for (int i = 0; i < lista.size(); i++) {
                  model.addRow(O);
                  model.setValueAt(lista.get(i), i, 0);
              }
          }

      Si en tu tabla tienes valores 1 y 0 solo falta que al momento de llenar tu tabla lo verifiques con un if o bien hacerte un pequeño método como:

      1
      2
      3
      4
      5
      6
      7
      8
      9
       private boolean getBoolean(String valor){
              boolean b=false;
              if(valor.equals("1")){
                  b= true;
              }else{
                  b = false;
              }
              return b;
          }

      y usarlo al momento de llenar tu jTable, espero haberte ayudado.
      Un saludo!.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *