Así como la entrada lo dice, ya son muchos los que me han preguntado como hacer para cargar un combobox a partir de otro, es decir... Que si selecciono una opción del combo1 me aparezcan otras opciones en el combo2... ¿Y como hacer eso?, pues hay muchas formas, pero la más práctica y simple es con los eventos y un switch, para ello vamos por pasos.
En esta entrada explico "llenar JComboBox con MySQL" y en esta otra el "Uso Basico del JComboBox". Ahora, lo primero crear el combo, vamos a crear 2 combos totalmente en blanco, sin nada de contenido.
Ya solo nos resta crear el evento (listener) que es quien hace que todo esto funcione.
En esta entrada explico "llenar JComboBox con MySQL" y en esta otra el "Uso Basico del JComboBox". Ahora, lo primero crear el combo, vamos a crear 2 combos totalmente en blanco, sin nada de contenido.
JComboBox combo1 = new JComboBox(); JComboBox combo2 = new JComboBox();Creamos los arreglos que esto dependerá de las opciones de nuestro combo, estos arreglos son las opciones que se cargarán según las opciones que tomemos.
String[] listaA={"amarillo","azul","rojo","verde","morado"}, listaB={"nevera","plato","cuaderno","morral","cortina"}, listaC={"php","java","foxpro","pascal","ruby"}, listaD={"zorro","leon","perro","gato","tortuga"}, listaE={"venezuela","argentina","mexico","españa","rusia"};Creamos el método para llenar el segundo combo según la opción del primero, en este caso lo haré por número de opción (index) con un switch, pero puede tomarse por caracteres utilizando ".equalsIgnoreCase()". En esta entrada explico el Uso del "switch" y del "if and else".
void llenarcombo2 (int index) { combo2.removeAllItems(); switch (index){ case 0:for (int i=0; i<listaA.length;i++){combo2.addItem(listaA[i]);};break; case 1:for (int i=0; i<listaB.length;i++){combo2.addItem(listaB[i]);};break; case 2:for (int i=0; i<listaC.length;i++){combo2.addItem(listaC[i]);};break; case 3:for (int i=0; i<listaD.length;i++){combo2.addItem(listaD[i]);};break; case 4:for (int i=0; i<listaE.length;i++){combo2.addItem(listaE[i]);};break; default:combo2.addItem(listaA);break; } }Como vemos borramos cualquier opción que este en el segundo combo para luego cargar las del primero, es simplemente borrar y escribir los nuevos valores. También utilizamos un ciclo para cargar cada una de las opciones en la lista y agregarlas al combo.
Ya solo nos resta crear el evento (listener) que es quien hace que todo esto funcione.
class ListenerCombo implements ActionListener { public void actionPerformed(ActionEvent evt) { llenarcombo2(combo1.getSelectedIndex()); } }De modo que todo esto nos viene quedando algo así:
import javax.swing.*; import java.awt.event.*; @SuppressWarnings("deprecation") public class jComboBox extends JFrame { String[] listaA={"amarillo","azul","rojo","verde","morado"}, listaB={"nevera","plato","cuaderno","morral","cortina"}, listaC={"php","java","foxpro","pascal","ruby"}, listaD={"zorro","leon","perro","gato","tortuga"}, listaE={"venezuela","argentina","mexico","españa","rusia"}; JComboBox combo1 = new JComboBox(); JComboBox combo2 = new JComboBox(); JPanel panel = new JPanel(); public jComboBox() { super("Los ComboBox"); setLocation(100,100); setSize(550,210); add(panel); combo1.addItem("Colores"); combo1.addItem("Objetos"); combo1.addItem("Lenguajes"); combo1.addItem("Animales"); combo1.addItem("Paises"); panel.add(combo1); panel.add(combo2); llenarcombo2(0); combo1.addActionListener(new ListenerCombo()); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } void llenarcombo2 (int index) { combo2.removeAllItems(); switch (index){ case 0:for (int i=0; i<listaA.length;i++){combo2.addItem(listaA[i]);};break; case 1:for (int i=0; i<listaB.length;i++){combo2.addItem(listaB[i]);};break; case 2:for (int i=0; i<listaC.length;i++){combo2.addItem(listaC[i]);};break; case 3:for (int i=0; i<listaD.length;i++){combo2.addItem(listaD[i]);};break; case 4:for (int i=0; i<listaE.length;i++){combo2.addItem(listaE[i]);};break; default:combo2.addItem(listaA);break; } } class ListenerCombo implements ActionListener { public void actionPerformed(ActionEvent evt) { llenarcombo2(combo1.getSelectedIndex()); } } public static void main(String[] arg) { JOptionPane.showMessageDialog(null,"Los JComboBox....n"); JOptionPane.showMessageDialog(null,"By Carlitox ("+ "http://calitoxenlaweb.blogspot.com)"); jComboBox app = new jComboBox(); app.setVisible(true); } }
Recibe notificaciones por correo
5 Comentarios
Escribir Comentarioy desde Mysql como seria?
ResponderYa estoy preparando la entrada... En unos 20 min debe estar publicada!
ResponderYa esta la nueva entrada, en enlace es el siguiente: http://carlitoxenlaweb.blogspot.com/2012/07/carga-jcombobox-partir-de-otro-mysql.html
ResponderY desde un fichero de texto como seria
ResponderPuedes utilizar algo como esto: http://carlitoxenlaweb.blogspot.com/2008/09/abrir-un-area-de-texto-jfilechooser.html
ResponderLamentablemente hay muchos usuarios en la red que han llegado al blog para escribir obscenidades, así que la moderación se hace necesaria. Recuerda utilizar un lenguaje correcto y espera a que sea aprobado.
Si necesitas publicar código haz click en "Conversión" para hacerlo legible.
ConversiónConversión