viernes, 22 de junio de 2012

JTable con Checkbox - Parte III

Finalmente, nos quedaría al momento de instanciar la tabla, y de asignarle el modelo de datos sobre el que va a trabajar, instancia también el renderer y el editor:




  private JPanel getContenido() {
    model = new DefaultTableModel(datos,columnas);
 
    tabla = new JTable(model);
     
    checkBoxRenderer = new CheckBoxRenderer();


    rowRenderer = new EachRowRenderer();
    rowEditor = new EachRowEditor(tabla);
 
    checkBox = new JCheckBox();
    
    checkBoxEditor = new DefaultCellEditor(checkBox);
         
    actualizarVistaTabla();
       
    JScrollPane scrol = new JScrollPane(tabla);
 
    JPanel panel = new JPanel(new BorderLayout());
 
    panel.add(scrol,BorderLayout.CENTER);
 
    return panel;
  }

Las lineas que están pintadas en azul, son las que utilizan las clases que ya nombramos anteriormente para visualizar y permitir editar el valor de la fila mediante un JCheckBox. Luego se llama al método actualizarVistaTabla() que contiene lo siguiente:


  private void actualizarVistaTabla() {
    for (int i = 0; i<model.getRowCount(); i++) {
      rowRenderer.add(i, checkBoxRenderer);
      rowEditor.setEditorAt(i, checkBoxEditor);
    }
 
    for (int i = 1; i<columnas.length; i++) {
      tabla.getColumn(columnas[i]).setCellRenderer(rowRenderer);
      tabla.getColumn(columnas[i]).setCellEditor(rowEditor);
      tabla.setEditingColumn(i);
   
    }  
  }

Este método asigna el renderer y el editor correspondiente a cada fila, si prestan atención van a ver que el 2do for inicia a partir de la 2da columna (recuerden que comienza a contar en 0), de esa forma la primer columna que es la de "nombre" se utiliza el renderer/editor por defecto.

Aquí tienen para descargar el ejemplo.


No hay comentarios:

Publicar un comentario