Hoy voy a seguir con los ejemplos de JTable, puesto que es un control muy completo y todavía queda bastante por mostrar.
Vimos como se puede construir una tabla sencilla, para mostrar datos estáticos que estan en un array. Ahora veremos como hacer para agregar filas a esta tabla y quitarlas.
Para ello utilizaremos un panel con cajas de texto para ingresar los datos y botones para realizar las acciones.
Aquí pueden ver el ejemplo:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;
public class EjemploJTable2 extends JFrame {
public EjemploJTable2() {
setTitle("Ejemplo");
JPanel panel = new JPanel(new BorderLayout());
panel.add(getPanelTexto(),BorderLayout.NORTH);
panel.add(getPanelTabla(),BorderLayout.CENTER);
setContentPane(panel);
setVisible(true);
pack();
}
private JTable tabla;
private DefaultTableModel model;
/*
* Construye el panel con la tabla de datos
*/
private JScrollPane getPanelTabla() {
String[] columnas = { "Mes","Cantidad" };
Object[][] datos = {
{ "Enero","10" },
{ "Febrero","23" },
{ "Marzo","14" },
{ "Abril","26" }
};
model = new DefaultTableModel(datos,columnas);
tabla = new JTable(model);
JScrollPane scrol = new JScrollPane(tabla);
return scrol;
}
private JTextField txtMes,txtCantidad;
/*
* Construye el panel con los controles y los botones
*/
private JPanel getPanelTexto() {
//Se crea un panel como una matriz de 2 filas por 3 columnas
JPanel panelTexto = new JPanel(new GridLayout(2,3));
JLabel lbMes = new JLabel("Mes");
txtMes = new JTextField("");
JLabel lbCantidad = new JLabel("Cantidad");
txtCantidad = new JTextField("");
JButton btnAgregar = new JButton("Agregar");
ButtonAgregarListener agregarListener = new ButtonAgregarListener();
btnAgregar.addActionListener(agregarListener);
JButton btnQuitar = new JButton("Quitar");
ButtonQuitarListener quitarListener = new ButtonQuitarListener();
btnQuitar.addActionListener(quitarListener);
//Estos controles se ubican en la primer fila
panelTexto.add(lbMes);
panelTexto.add(txtMes);
panelTexto.add(btnAgregar);
//Estos se ubican en la segunda fila
panelTexto.add(lbCantidad);
panelTexto.add(txtCantidad);
panelTexto.add(btnQuitar);
//Se agrega panelTexto a un panel con FlowLayout para que mantenga la proporcion
JPanel panel = new JPanel(new FlowLayout());
panel.add(panelTexto);
return panel;
}
public static void main(String[] args) {
EjemploJTable2 frame = new EjemploJTable2();
}
public class ButtonAgregarListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
//Se obtienen el contenido de las cajas de texto
String mes = txtMes.getText();
String cantidad = txtMes.getText();
//se crea una array de String que sea la fila que agregaremos al modelo de la tabla
String[] fila = new String[2];
//Asignamos a cada columna su valor correspondiente
fila[0] = mes;
fila[1] = cantidad;
//Agregamos la fila al modelo
model.addRow(fila);
//Vaciamos los controles
txtMes.setText("");
txtCantidad.setText("");
}
}
public class ButtonQuitarListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
//Obtenemos la cantidad de filas seleccionadas de la tabla
int cantidadFilasSeleccionadas = tabla.getSelectedRowCount();
if(cantidadFilasSeleccionadas > 0) {
//Obtenemos cual es el nro. de fila que se selecciono
int nroFila = tabla.getSelectedRow();
//Quitamos esa fila del modelo
model.removeRow(nroFila);
}
}
}
}
Lo importante del ejemplo son las clases ButtonAgregarListener y ButtonQuitarListener, que son las que generan la acción de agregar o quitar datos de la tabla, como podran ver es bastante sencillo.
Tengan en cuenta que en este ejemplo no se realiza ninguna acción de control, es decir no se verifica que los datos que se agregan a la tablas sean nulos. Solo se verifica que al quitar una fila de la tabla, se encuentre alguna fila seleccionada.
No hay comentarios:
Publicar un comentario