Título: como pasar un resulset a un jcombobox dentro de jtable? Publicado por: hack-4-life en 20 Mayo 2011, 18:26 pm hola bueno,que tal, me surgio otra duda...ahora implemente lo que muchos preguntan,como tener un jcombobox a un jtable....
ahora si yo cargo los items de mi base de datos de esta manera....normalmente Código
y ahora mando a traer mi metodo asii Código
ahora mi pregunta es... como le paso los datos a un jcombobox que esta en un jtable?eso es lo que no entiendo como hacerlo... Código
ahora mi pregunta...como se lo implemento con la consulta que yo tengo vere la manera de hacerlo eso es lo que no entiendo..bueno gracias saludos Título: Re: como pasar un resulset a un jcombobox dentro de jtable? Publicado por: sapito169 en 20 Mayo 2011, 23:55 pm Código: public class Producto { private int id; private String nombre; public Producto(int id, String nombre) { this.id = id; this.nombre = nombre; } public int getId() { return id; } public String getNombre() { return nombre; } @Override public String toString() { return "Producto [id= " + id + " nombre= " + nombre + " ]"; } } Código: import java.awt.BorderLayout; Dentro de la tabla está contenida objetos de tipo producto (no tengas ningun miedo en crear clases) no es la solución con mejor manejo de memoria pero si la mas facil y rapidaimport javax.swing.DefaultCellEditor; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JTable; public class Main { public static void main(String arg[]) { JFrame frame = new JFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(300, 400); frame.setLocationRelativeTo(null); JComboBox jComboBox = new JComboBox(); jComboBox.addItem(new Producto(1, "producto 1")); jComboBox.addItem(new Producto(2, "producto 2")); jComboBox.addItem(new Producto(3, "producto 3")); jComboBox.addItem(new Producto(4, "producto 4")); frame.setLayout(new BorderLayout()); DefaultCellEditor defaultCellEditor = new DefaultCellEditor(jComboBox); JTable jtable = new JTable(3, 1); jtable.getColumnModel().getColumn(0).setCellEditor(defaultCellEditor); frame.getContentPane().add(jtable); frame.setVisible(true); } } -debido al comportamiento por defecto que tienen las clases swing que e usado Una vez que seleccionas el producto que quieras la celdas se divujaran como una cadena que es obtenida al llamar al método toString de la clase producto Eso quiere decir que si quieres que se represente la celda de otra forma digamos solo el nombre tendrías que cambiar el método toString del producto por getNombre() -cuando llames al método getValueAt(fila,columna) te devolverá una un Objeto de la clase Producto nota esta solución no es la más correcta si quieres trabajar representar tablas muy grandes miles de registros pero debido a que esta es una horrible practica que debe ser evita y habiendo la alternativa de simplemente paginar la tabla considero como la mejor opción Esta solución carga objetos de tipo producto en memoria podría ser optimizada cargando solo las llaves primarias en memoria pero tendrías que tener conocimientos mas avanzados de swing y crear más clases |