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