Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube
JC Mouse Bolivia
Index / Java / Agregar JComboBox a un JTable

Agregar JComboBox a un JTable

Autor jc mouse lunes, junio 18, 2018

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:

  • Java 1.8 u superior
  • IDE Netbeans

Tiempo: 15 minutos

Nivel: Intermedio

Paso 1: Crea un proyecto en Netbeans de la siguiente forma:

para la igualdad de raza

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

add combo table

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 http://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

combobox agregar en tabla

console data

enjoy!!!

Tags

Si te ha gustado podrías compartirlo o dejar un comentario. ¡Muchas gracias!
Autor: JC Mouse

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! :)

También Te Podría Interesar

Detectar un punto dentro de un polígono HTML5

Detectar un punto dentro de un polígono HTML5

En un ejemplo anterior [Seleccionar y mover shapes en html5] se utilizo un método sencillo para detectar si un punto se...

Configurar Chrome para usar Tor

Configurar Chrome para usar Tor

Tor es la forma más fácil de navegar por internet de una manera segura y anónima,  Tor cuenta con su propio navegador...

Crear archivos JNLP con Netbeans

Crear archivos JNLP con Netbeans

¿Que son los archivos JNLP? Java Network Launching Protocol (JNLP) es una especificación usada por Java Web Start. Esta...

JSCRUM .:. Gestor de Proyectos

JSCRUM .:. Gestor de Proyectos

¿Qué es SCRUM? SCRUM es un modelo de referencia que define un conjunto de prácticas y roles, y que puede tomarse como pu...

Crear componentes en tiempo de ejecución con Netbeans

Crear componentes en tiempo de ejecución con Netbeans

🙂 Una de las preguntas más buscadas por programadores java es la de crear componentes swing en tiempo de ejecución, eso...

Introducción a MariaDB con Java

Introducción a MariaDB con Java

Maria DB  es un sistema de gestión de bases de datos derivado de MySQL con licencia GPL, pero con un rendimiento similar...

Comparte lo que sabes

Categorias

Últimas entradas

Netbeans es uno de los entornos de desarrollo integrado (Integrated Development Environment – IDE)  más conocidos...

Geany es un editor de texto para Sistemas Operativos Linux, windows y MAC que utiliza el kit de herramientas GTK+ con ca...

En este post te hablaremos sobre una interesante herramienta para le lectura y edición de metadatos que no te debe de fa...

Java cuenta con la clase java.lang.Math  la cual contiene métodos para realizar operaciones numéricas básicas como las f...

Android Bolivia

MAUS