JComboBox, es un componente de java q nos sirve para controlar la selecion del usuario final a un determinado conjunto de tipos, algo asi es la idea, ademas creoq eso la lo sabran…jeje
El ejericio q les mostrare, es una aplicacion q tiene 2 JComboBox, el cual el primer combo controla el contenido del segundo combo, es decir, si selecionas un elemento del primero, el segundo combo, mostrara el contenido respecto a dicha selecion.
Una ves entendido, la logica de la aplicacion, lo implementamos, LA VERDAD ES REALMENTE SENCILLO. Para este caso, tendremos 2(dos) clases WindowDemoCombo y ControlDemoCombo.
La primera clase(WindowDemoCombo), es la ventana(JFrame, JLabel, JComboBox… en fin todos los componentes q actuan en la ventana) q visualiza el usuario.
La segunda clase(ControlDemoCombo), es la clase q controla los eventos, en este caso la accion de selecion en el primer JComboBox.
WindowDemoCombo; Creamos los componentes swing, y CREAMOS un objeto de la clase q controlada sus eventos, en este caso;
ControlDemoCombo controlDemoCombo = new ControlDemoCombo(this);
Veamos q al momento de crearlo estamos pasando “this”, esto quiere decir q al momento de crear la clase q lo controlara, le pasaremos como argumento toda la ventana… es obvia la idea, le pasamos toda la ventana, para q asi pueda acceder a ella.
Aqui el fuente
/*Demostracion Aprendiendo con JComboBox por inforux.wordpress.com */
import javax.swing.*;
public class WindowDemoCombo extends javax.swing.JFrame {
/** Creamos el constructor de la misma */
public WindowDemoCombo() {
initComponents();}
private void initComponents() {
jPanel1 = new JPanel();
jLabel1 = new JLabel();
jLabel2 = new JLabel();
jLabel3 = new JLabel();
jComboBox1 = new JComboBox(pais);//creamos el primer combo, y le pasamos un array de cadenas
jComboBox1.setSelectedIndex(0);//por defecto quiero visualizar el primer item
jComboBox2 = new JComboBox();//creamo el segundo combo, vacio
jComboBox2.setEnabled(false);////por defecto q aparesca desabilidado
setResizable(false);
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
getContentPane().setLayout(null);
jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("Aprendiendo con JComboBox"));
jPanel1.setLayout(null);
jLabel1.setText("Pais");
jPanel1.add(jLabel1);
jLabel1.setBounds(30, 30, 50, 20);
jPanel1.add(jComboBox1);
jComboBox1.setBounds(100, 30, 150, 24);
jPanel1.add(jComboBox2);
jComboBox2.setBounds(100, 70, 150, 24);
jLabel2.setText("Region");
jPanel1.add(jLabel2);
jLabel2.setBounds(30, 70, 60, 20);
getContentPane().add(jPanel1);
jPanel1.setBounds(10, 50, 370, 110);
jLabel3.setText("DEMO POR INFORUX");
getContentPane().add(jLabel3);
jLabel3.setBounds(120, 20, 170, 20);
java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
setBounds((screenSize.width-412)/2, (screenSize.height-213)/2, 412, 213);
/*Creamos el objeto controlador, para manejar los eventos*/
ControlDemoCombo controlDemoCombo = new ControlDemoCombo(this);//le pasamos como argumento esta misma ventana
jComboBox1.addActionListener(controlDemoCombo);//agregamos escuchas
}
public static void main(String args[]) {
new WindowDemoCombo().setVisible(true);}
// Desclaramos las variables autilizar
String [] regionArgentina={"Buenos Aires","Cordova","Santa Cruz"};//array del segundo combo
String [] regionColombia={"Bogota","Cartagena","Cali"};//array del seguno combo
String [] regionPeru={"Arequipa","Lima","Piura"};//array del segundo combo
String [] pais={"Selecione Pais","Argentina","Colombia","Peru"};//array del primer combo
public JComboBox jComboBox1;
public JComboBox jComboBox2;
public JLabel jLabel1;
private JLabel jLabel2;
private JLabel jLabel3;
private JPanel jPanel1;
}
ControlDemoCombo: Es una clase controladora de todas las acciones q realize el usuario en la
ventana(WindoDemoCombo). en este caso, la clase implement de ActionListener, y declara una variable del tipo
WindowDemoCombo, este nos servira para recibir el valor “this”, enviado anteriormente.
WindowDemoCombo frameDemoCombo;
La idea es preguntar si la accion viene del primer combo
if (evento.getSource()==frameDemoCombo.jComboBox1)
luego, preguntar cual de los elementos ha hecho click, esto lo podemos hacer con el metodo getSelectedIndex(), este nos retorna el numero del indice seleciono.
if (frameDemoCombo.jComboBox1.getSelectedIndex()==0)
despues de saber, cual esta selecionado solo nos queda llenar el segundo combo, no sin antes elimnar, todos los elementos posibles.
frameDemoCombo.jComboBox2.removeAllItems(); frameDemoCombo.jComboBox2.addItem(frameDemoCombo.regionArgentina[i]);
Aqui elfuente:
import java.awt.event.*;
public class ControlDemoCombo implements ActionListener{
WindowDemoCombo frameDemoCombo;
public ControlDemoCombo(WindowDemoCombo objeto){
frameDemoCombo=objeto;}
public void actionPerformed(ActionEvent evento)
{
if (evento.getSource()==frameDemoCombo.jComboBox1)//pregunta si el evento viene del primer combo
{/*pregunta si viene del primer elemnto*/
if (frameDemoCombo.jComboBox1.getSelectedIndex()==0){
frameDemoCombo.jComboBox2.removeAllItems();
frameDemoCombo.jComboBox2.setEnabled(false);}
/*pregunta si viene del segundo elemnto*/
if (frameDemoCombo.jComboBox1.getSelectedIndex()==1){
frameDemoCombo.jComboBox2.removeAllItems();
for (int i=0; i<frameDemoCombo.regionArgentina.length;i++)
frameDemoCombo.jComboBox2.addItem(frameDemoCombo.regionArgentina[i]);
frameDemoCombo.jComboBox2.setEnabled(true);}
/*pregunta si viene del tercer elemnto*/
if (frameDemoCombo.jComboBox1.getSelectedIndex()==2){
frameDemoCombo.jComboBox2.removeAllItems();
for (int i=0; i<frameDemoCombo.regionColombia.length;i++)
frameDemoCombo.jComboBox2.addItem(frameDemoCombo.regionColombia[i]);
frameDemoCombo.jComboBox2.setEnabled(true);}
/*pregunta si viene del cuarto elemnto*/
if (frameDemoCombo.jComboBox1.getSelectedIndex()==3){
frameDemoCombo.jComboBox2.removeAllItems();
for (int i=0; i<frameDemoCombo.regionPeru.length;i++)
frameDemoCombo.jComboBox2.addItem(frameDemoCombo.regionPeru[i]);
frameDemoCombo.jComboBox2.setEnabled(true);}
}
}
}
Y listo ahora , compilar (javac *.java) y Listo, al ejecutar (java WindowDemoCombo), debe aparecer esta pantalla:
Selecionamos y se activara el segundo combo, con sus respectivos valores del primero.
Funciona!, Espero les sea de utilidad.
Saludos.









0 comentarios:
Publicar un comentario