Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > jComboBox

Hola amigos, me gustaria saber si un jComboBox en java puedo agregar dos columnas, "Id, Nombre", donde el valor a mostrar es "Nombre" y el valor a obtener y guardar en una tabla es "Id", sin la necesidad de crear otra clase con Set, Get, para introducir como objeto en el JcomboBox.

En C#.Net, el componente ya lo trae como una propiedad.
Alguna sugerencia, gracias por todo.

agosto 24, 2016 | Unregistered CommenterLeonel

Para eso ya existe la JTable.
No le veo mucho sentido que un combobox tenga dos columnas.
La única manera que veo de lograrlo sería crear un renderer del popup desplegable, para que aceptase una lista de JPanel, que a su vez debería incluir ambas columnas en sendos componentes. ¡Demasiado esfuerzo cuando una JTable lo resuelve!.

agosto 25, 2016 | Registered Commenterchoces

Me voy extender un poco mas, digamos que tengo un jframe donde tengo los datos de factura, en algún lado de la factura debo indicar a que vendedor corresponde dicha factura, entonces utilizo un jcombobox en vez de otra jTable, en el jCobobox, muestro el nombre del vendedor, para marcar insertar en la tabla de facturas el vendedor elegido, que dato inserto? el nombre o el codigo(id)?

Gracias por el apoyo.

agosto 26, 2016 | Unregistered CommenterLeonel

Puedes una lista de objetos en el jcombobox donde los objetos tienen propiedades como nombre e id, pero solo mostrarías el nombre y usarías el id.

No soy experto, pero hago un aporte que hice hace ya un tiempo, uso jList pero el uso con el jcomboBox es análogo porque recuerdo que lo hice

http://usandojava.blogspot.com.co/2013/03/lista-de-objetos-usando-java.html

agosto 26, 2016 | Unregistered Commenterresalpa84

Lo que planteas es asignarle a un JComboBox la funcionalidad de una JTable, lo que no es posible, porque son dos componentes muy diferentes.
La solución de @resalpa84 no te sirve porque ya has dicho: "... sin la necesidad de crear otra clase con Set, Get, para introducir como objeto en el JcomboBox."

agosto 26, 2016 | Registered Commenterchoces

Hola.
Este ejemplo te muestra el nombre de una persona y tiene un id que lo identifica
Al seleccionar un valor te imprime el id

Ojala que te sea util


package solo.es;

import java.awt.Container;
import java.awt.EventQueue;
import java.awt.FlowLayout;
import java.util.LinkedHashMap;
import java.util.Map;

import javax.swing.JComboBox;
import javax.swing.JFrame;

/**
* @author mauricio
*
*/
public class Base extends JFrame {

public Base() {
Container cont = getContentPane();
cont.setLayout(new FlowLayout());
Map<String, Integer> mapa = new LinkedHashMap<>();
mapa.put("Mauricio", 1);
mapa.put("Carmen", 2);
mapa.put("Laura", 3);
JComboBox<String> combo = new JComboBox<>();
mapa.forEach((k, v) -> {
combo.addItem(k);
});
combo.addActionListener(e -> {
int valor = mapa.get(combo.getItemAt(combo.getSelectedIndex()));
System.out.println(valor);

});
add(combo);
setSize(400, 350);
setLocationRelativeTo(null);
setVisible(true);

}

/**
* @param args
*/
public static void main(String... args) {
// TODO Auto-generated method stub
EventQueue.invokeLater(new Runnable() {

@Override
public void run() {
// TODO Auto-generated method stub
new Base().setVisible(true);

}
});

}

/**
*
*/
private static final long serialVersionUID = 495653470723121391L;

}

agosto 27, 2016 | Unregistered Commenterraul