En este post, crearemos una tabla swing que implemente un control jcombobox en una columna de una tabla, llenaremos con unos datos y probaremos la impresión de los mismos.
Necesitamos:
Tiempo: 15 minutos
Nivel: Intermedio
Paso 1: Crea un proyecto en Netbeans de la siguiente forma:
Paso 2: Abre en modo diseño el JFrame del proyecto y añade un JTable y dos JButtons como se ve en la siguiente imagen
Paso 3: Abre la clase CeldaRenderer y agrega el siguiente código:
import java.awt.Component; import javax.swing.JComboBox; import javax.swing.JTable; import javax.swing.table.DefaultTableCellRenderer; /** * @see https://www.jc-mouse.net/ * @author mouse */ public class CeldaRenderer extends DefaultTableCellRenderer { private int col = -1; public CeldaRenderer(int col) { this.col = col; } @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { Component cellComponent = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); //retorna un combo con el valor seleccionado if (col == column) {//la columna que tiene el JComboBox JComboBox comboBox = new JComboBox(); comboBox.addItem(value); return comboBox; } return cellComponent; } }
Esta clase es la que nos permite mostrar todo el tiempo el JCombo en la tabla, por el constructor de clase se para un parámetro entero el cual indica a que columna se le debe aplicar el combobox
Paso 4: Abre el JFrame en modo código y realiza los siguientes cambios:
– Agrega los siguientes imports
import javax.swing.DefaultCellEditor; import javax.swing.JComboBox; import javax.swing.table.DefaultTableModel;
– Declara Array para el encabezado, en este ejemplo tiene tres columnas para el Nombre, País y E-Mail. Declaramos también un model que en primera instancia, estará vacío.
private final Object[] HEADER_NAME = new Object[]{"Nombre", "Pais", "E-Mail"}; private DefaultTableModel model = new DefaultTableModel( new Object[][]{}, HEADER_NAME);
– Declara el siguiente método:
private void crearTablaCombo() { //Combo y valores JComboBox comboBox = new JComboBox(); comboBox.addItem("Argentina"); comboBox.addItem("Bolivia"); comboBox.addItem("Brasil"); comboBox.addItem("Canada"); comboBox.addItem("España"); comboBox.addItem("Guatemala"); comboBox.addItem("Mexico"); //se agrega model al JTable jTable1.setModel(model); jTable1.setRowHeight(22);//altura de filas //se indica que columna tendra el JComboBox jTable1.getColumnModel().getColumn(1).setCellEditor(new DefaultCellEditor(comboBox)); jTable1.setDefaultRenderer(Object.class, new CeldaRenderer(1)); }
Este método privado lo que hace es declarar un JCombo con los valores que se mostraran en pantalla, en este ejemplo, es una lista de países. Se Asigna el model creado a la tabla, se ajusta el alto de las filas y por último, se le indica al model y al JTable que muestre el JCombo en la columna 2 (Columnas numeras desde 0,1,2….n) que vendria a ser el 1 comenzando desde 0.
– El método arriba declarado se lo llama desde el constructor de clase del JFrame:
public JFrame() { initComponents(); crearTablaCombo(); }
– Para el JButton1 «Agregar Datos» el código es el siguiente:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { model = new DefaultTableModel(new Object[][]{ {"Aquiles Brinco", "Cananda", "aquiles@mail.com"}, {"Luz Rojas", "Bolivia", "luzr@mail.com"}, {"Zacarias Flores del Campo", "Mexico", "zac_arias@mail.com"}, {"Lucho Pay", "Brasil", "luchin@mail.com"}, {"Elvis Tek", "Argentina", "elvis@mail.com"}, {"Aquiles Bailo", "Brasil", "aquil5s@mail.com"}, {"Elsa Capunta", "Bolivia", "elsa_p@mail.com"}, {"Mario Neta", "Guatemala", "maroon_five@mail.com"}, {"Elba Calao", "Cananda", "elb_pez@mail.com"}, {"Yola Prieto", "Brasil", "yol_1_2_3@mail.com"}, {"Rosamel Forrito", "Argentina", "rossss@mail.com"} }, HEADER_NAME); crearTablaCombo(); }
Lo que hacemos es agregar datos al model y llamar al método crearTablaCombo().
– Para el JButton2 «Imprimir Datos» el código es:
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) { System.out.println("----------------------------------------"); for(int i=0; i< model.getRowCount(); i++){ for(int j=0; j< model.getColumnCount(); j++){ System.out.print( model.getValueAt(i, j) + " | "); } System.out.println(); } }
El botón 2, tiene la tarea de imprimir los datos del JTable, podemos realizar algunos cambios en este e imprimir para constatar que los cambios se realizaron correctamente
Paso 5: Ejecuta y prueba
enjoy!!!
Yo soy yo :) JC Mouse, Soy orgullosamente boliviano soy fundador y CEO de la web jc-Mouse.net uno de las pocas web en emprendimiento y tecnología en Bolivia.
Toda la información que encuentres en este sitio es y sera completamente gratis siempre, puedes copiar, descargar y re-publicar si así lo deseas en otros blogs o sitios web, solo te pido a cambio que dejes una referencia a esta web. Esto nos ayuda a crecer y seguir aportando. Bye
Enjoy! :)
Segunda parte del tutorial «Crea un servicio web REST con PHP y MYSQL«, en esta segunda y ultima parte se completara la...
Java Network Launching Protocol (JNLP) es una especificación usada por Java Web Start. Esta especificación, permite tene...
Las matemáticas son fundamentales para la vida y aparte de las actividades clásicas de enseñanza desarrolladas en el aul...
Java Help es (o era) una librería para java que permitía añadir ventanas de ayuda HTML a nuestros proyectos, al ser una...
Lenguaje: C# Nivel: Básico 1) Se desea desarrollar un programa que permita introducir una oración por teclado y contar l...
En esta tercera parte del tutorial crearemos la interfaz de usuario GUI (VISTA) para el sistema de gestión de stock. Tom...
El gigante tecnologico Google a puesto un bonito Doodle en su buscador que esta fascinando a sus millones de usuarios qu...
WhatsApp anuncio a través de su blog que ya se encuentra disponible la función de envío de fotos y videos TEMPORALES, es...
Muchas de las innovaciones computacionales de la NASA se desarrollaron para ayudar a explorar el espacio, pero ahora la...
TikTok es una plataforma de microvideos muy popular entre los jóvenes el cual cuenta ya con millones de videos cortps de...