Foros del Web » Programación para mayores de 30 ;) » Java »

Invocar JComboBox

Estas en el tema de Invocar JComboBox en el foro de Java en Foros del Web. Hola gente, Necesito ayuda; En un JFrame tengo 6 ComboBox que están anidados en pares (lo que ocurre en el primero afecta al segundo) lo ...
  #1 (permalink)  
Antiguo 04/03/2014, 20:17
 
Fecha de Ingreso: febrero-2014
Mensajes: 16
Antigüedad: 10 años, 9 meses
Puntos: 0
Invocar JComboBox

Hola gente,

Necesito ayuda;

En un JFrame tengo 6 ComboBox que están anidados en pares (lo que ocurre en el primero afecta al segundo) lo que me genera mucho codigo.

En su lugar quiero que el JFrame invoque 3 JPanel que tengan un par de ComboBox cada uno, ahora bien en el JPanel tengo un metodo actionPerformed con un parametro actionEvent, que es lo que me trae problemas al invocar el método ya que no tengo idea de como se instancia ni nada.

Pueden darme una mano??

Aca les dejo el código

La clase del JPanel:

package Interface;

import java.awt.Font;

public class ComboPanel extends JPanel {

/**
*
*/
private static final long serialVersionUID = 1L;
/**
* Create the panel.
*/
@SuppressWarnings("rawtypes")
private JComboBox B;
private JLabel lblB;
@SuppressWarnings("rawtypes")
private JComboBox V;
private JLabel lblV;
private JPanel contentPane;
@SuppressWarnings("unused")
private String[] listaCol;
private Dbs db;

@SuppressWarnings({ "unchecked", "rawtypes" })
public ComboPanel(String[] listaCol) {
super();
this.listaCol = listaCol;
contentPane= new JPanel();
contentPane.setLayout(null);

lblB = new JLabel("Seleccione parametro");
lblB.setFont(new Font("SansSerif", Font.BOLD, 18));
lblB.setBounds(10, 10, 200, 30);
contentPane.add(lblB);

B = new JComboBox(listaCol);
B.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
try{
do_B_actionPerformed(arg0);
}catch (PersExcep e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});

B.setFont(new Font("SansSerif", Font.PLAIN, 18));
B.setToolTipText("Busque por");
B.setBounds(10, 40, 250, 30);
contentPane.add(B);

lblV = new JLabel("Seleccione valor");
lblV.setFont(new Font("SansSerif", Font.BOLD, 18));
lblV.setBounds(10, 70, 200, 30);
contentPane.add(lblV);

V = new JComboBox();
V.setToolTipText("Busque por");
V.setFont(new Font("SansSerif", Font.PLAIN, 18));
V.setBounds(10, 100, 250, 30);
contentPane.add(V);

}

@SuppressWarnings({"unchecked" })
public void do_B_actionPerformed(ActionEvent arg0) throws PersExcep{

try{

V.removeAllItems();
String aja =(String)B.getSelectedItem();
db.obtenerVal(aja);
if(B.getSelectedItem()=="Codigo SAP"||B.getSelectedItem()=="Codigo de Barras" ||B.getSelectedItem()=="Codigo Cliente" ){
V.setEditable(true);
lblV.setText("Escriba el "+B.getSelectedItem() );
}else if(B.getSelectedItem()=="Presentacion"){
for(int i =0;i< db.getILsize();i++ ){
V.addItem(db.getILista(i));
}
}else{
for(int i =0;i< db.getSLsize();i++ ){
V.addItem(db.getSLista(i));
}
}

}catch (Exception ex){
ex.printStackTrace();
throw new PersExcep();

}
}


}

y el método en la clase del JFrame donde trato de invocar un nuevo JPanel

cp = new ComboPanel(listaCol);
contentPane.add(cp);
cp.do_B_actionPerformed(ActionEvent arg0);
  #2 (permalink)  
Antiguo 05/03/2014, 06:54
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 2 meses
Puntos: 454
Respuesta: Invocar JComboBox

Hola:

En principio no tienes que llamar tú a ese método, lo hara el ActionListener que has añadido al combo.

En cualquier caso, como tu código no hace nada con ese ActionEvent que recibes (arg0), puedes perfectamente pasarle un null.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 05/03/2014, 19:34
 
Fecha de Ingreso: febrero-2014
Mensajes: 16
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: Invocar JComboBox

Hola,
Gracias, te refieres a que cambie:
public void actionPerformed(ActionEvent arg0)
por:

public void actionPerformed(null)


tambien cambie el codigo en el Jframe por:

cp = new ComboPanel(listaCol);
cp.setBounds(0, 0, 270, 150);
getContentPane().add(cp);
cp.setEnabled(true);
cp.setLayout(null);


Aunque ahora si bien Jframe me carga el objeto cp pero no muestra sus componentes, no lo entiendo ya cp es un objeto del tipo ComboPanel que por definición es un contenedor y deberia mostrar sus componentes.

En que le estoy errando?! acaso mi idea general esta mal? debería cambiar en la definición de la clase por algun otro tipo de contenedor?
  #4 (permalink)  
Antiguo 05/03/2014, 22:38
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 2 meses
Puntos: 454
Respuesta: Invocar JComboBox

Creo que no cuentas bien lo que has hecho.

Esto

public void actionPerformed(null)

no debería compilar

y si pones cp.setLayout(null) tienes que dar tú a base de setBounds() todos los tamaños de todos los componentes que vayan dentro, después de haber puesto en setLayout(null).

Se bueno.
__________________
Apuntes Java
Wiki de Programación

Etiquetas: clase, invocar, jcombobox, metodo, string, valor
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:52.