Tabla seleccionable con Swing

Parece ser que están dando guerra las tablas xD A continuación les dejo un post con un ejemplo de tabla con cajas seleccionables y otros valores que son en éste caso enteros. Luego tenemos un botón con el que podemos recorrer la tabla (el modelo que representa los valores de la tabla) e ir borrando las filas que tienen la caja seleccionable seleccionada, valga la redundancia… 

Al grano, vamos con el ejemplo:
package swing;

import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.border.EmptyBorder;
import javax.swing.table.DefaultTableModel;

public class TablaSeleccionable extends JFrame {

private static final long serialVersionUID = 1L;
private JPanel contentPane;
private JTable table;

/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
TablaSeleccionable frame = new TablaSeleccionable();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}

/**
* Create the frame.
*/
public TablaSeleccionable() {
setTitle("Tabla seleccionable by jnj");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 604, 347);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);

JScrollPane scrollPane = new JScrollPane();
scrollPane.setBounds(10, 11, 560, 227);
getContentPane().add(scrollPane);

String[] columnas = { "Los checkbox", "Un dato", "Otro dato" };
final DefaultTableModel modelo;
modelo = new DefaultTableModel(null, columnas);

// hay que programar nuestra propia función getColumnClass para
// poder poner controles como por ejemplo el checkbox con los datos
// booleanos
table = new JTable(modelo) {
private static final long serialVersionUID = 1L;

@Override
public Class getColumnClass(int column) {
switch (column) {
case 0:
return Boolean.class;
case 1:
return Integer.class;
case 2:
return Integer.class;
default:
return Boolean.class;
}
}
};

table.setBounds(26, 26, 463, 332);
scrollPane.setViewportView(table);

// INSERTA UNOS DATOS EN LA TABLA
for (int i = 0; i < 10; i++) {
Object[] nuevafila = { false, i, i };
modelo.addRow(nuevafila);
}

// BOTON QUE ELIMINA FILAS,
// Recorre de atrás hacia adelante las filas eliminando las
// seleccionadas.
JButton btnEliminarFilas = new JButton("Eliminar filas");
btnEliminarFilas.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
for (int i = 9; i >= 0; i--) {
// si la fila i, columna 0 es true, es porque está
// seleccionado el checkbox, entonces borra
if (((Boolean) modelo.getValueAt(i, 0)) == true) {
modelo.removeRow(i);
}
}

}
});
btnEliminarFilas.setBounds(10, 249, 201, 23);
contentPane.add(btnEliminarFilas);

}
}
En el ejemplo he puesto un DefaultTableModel por su simplicidad. Hay otras formas de hacer lo mismo, como viene siendo habitual en programación. Espero que sirva.
Saludos!
Compartir..

Dejar un comentario

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

quince + 3 =