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

Listener jcombobox

Estas en el tema de Listener jcombobox en el foro de Java en Foros del Web. Hola! Tengo un pequeño cacao en la cabeza, a ver si alguien puede echarme una manita. Resumen: Tengo una bd en la que guardo los ...
  #1 (permalink)  
Antiguo 26/02/2008, 05:42
 
Fecha de Ingreso: junio-2004
Mensajes: 33
Antigüedad: 19 años, 10 meses
Puntos: 0
Listener jcombobox

Hola!
Tengo un pequeño cacao en la cabeza, a ver si alguien puede echarme una manita.

Resumen:

Tengo una bd en la que guardo los datos de personas que hablan durante una reunion, es decir, guardo los datos de pepito perez y tambien las grabaciones de sus intervenciones (mp3).

En una frame enseño los datos de pepito, y de todos los que han hablado, mas los enlaces a sus intervenciones. Si pepito habla tres veces tengo dos jLabel con pepito perez y un jComboBox en el que la lista de elementos son los enlaces a los mp3 de sus intervenciones. Asi por cada asistente que ha hablado en la reunion.

Problema:

La frame la creo dinamicamente, por que, no en todas las reuniones hay el mismo numero de asistentes ni hablan el mismo numero de veces.

Y tengo problemas con el listener del jComboBox ya que no consigo coger los datos.

Aqui va el codigo

......................

while (asi.hasMoreElements())
{
asie = (String) asi.nextElement();
enl = DatosAsiento(asie, fecha, sesion);
this.f = enl.getStrFoto();
FotoBek[n] = new JLabel();
java.awt.Color(0, 0, 0)));
FotoBek[n].setIcon(new javax.swing.ImageIcon(enl.getStrFoto()));

////creo el vector de jLabel, recogo el nombre

NombreBek[n] = new JLabel();
NombreBek[n].setText(enl.getStrNombre());

////creo el vector de jLabel, recogo el apellido

ApellidoBek[n] = new JLabel();
ApellidoBek[n].setText(enl.getStrApellido());

//creo el vector de jComboBox
Mp3Bek[n] = new JComboBox();

//recogo todas las intervenciones de la persona en concreto
mp3 = Intervencion_persona_sesion(asie, fecha, sesion);
inter = mp3.elements();

//relleno el jComboBox de esa persona en concreto
while (inter.hasMoreElements())
{
pinter = (String)inter.nextElement();
Mp3Bek[n].addItem(pinter);
}
///////////////////////////////////////////////////////////////////////////////////////////////
//le añado el action listener al jComboBox en concreto?????Aki es donde me hago un lio , no consigo, pasar bien los datos ////con la funcion
jMp3ActionPerformedActionPerformed(e);///quiero pasar el string del jComboBOx he probado a pasar n pero, claro me coge la ultima iteracion ya que la accion es despues de haber dibujado toda la Frame.
//////////////////////////////////////////////////////////
Mp3Bek[n].addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(ActionEvent e) {

jMp3ActionPerformedActionPerformed(e);
}});


jPanel1.add(FotoBek[n] );
FotoBek[n].setBounds(90, 100+lerropos, 150, 80);

jPanel1.add(EmpresaBek[n] );
EmpresaBek[n].setBounds(240, 155+lerropos, 90, 30);

jPanel1.add(NombreBek[n]);
NombreBek[n].setBounds(440, 155+lerropos, 134, 30);

jPanel1.add(ApellidoBek[n] );
ApellidoBek[n].setBounds(640, 155+lerropos, 90, 30);

jPanel1.add(Mp3Bek[n]);
Mp3Bek[n].setBounds(800, 155+lerropos, 234, 30);

lerropos = lerropos + 100;

n++;
}


Muchas gracias, de antemano,

Un saludo
Rowan
  #2 (permalink)  
Antiguo 26/02/2008, 07:22
 
Fecha de Ingreso: septiembre-2007
Mensajes: 173
Antigüedad: 16 años, 7 meses
Puntos: 0
Re: Listener jcombobox

Para coger los datos del combobox, si los coges desde otro lado, no desde esa clase, dale un nombre, y podrás acceder a sus datos.

Otra manera: utilizando la sincronización: coges el primero, lo paras, coges el segundo, lo paras...

Yo tengo hecho algo así para listar los miembros de un grupo, dinámicamente.

Saludos.

Saludos.
  #3 (permalink)  
Antiguo 26/02/2008, 08:30
 
Fecha de Ingreso: junio-2004
Mensajes: 33
Antigüedad: 19 años, 10 meses
Puntos: 0
Re: Listener jcombobox

Hola,
Pero como se que ComboBox es el que ha elegido el usuario?

Gracias por contestar

Saludos
  #4 (permalink)  
Antiguo 26/02/2008, 09:26
 
Fecha de Ingreso: septiembre-2007
Mensajes: 173
Antigüedad: 16 años, 7 meses
Puntos: 0
Re: Listener jcombobox

Por el nombre. Cuando el usuario elige un JComboBox, éste tendrá un nombre. Al pinchar puedes recoger el nombre y guardarla en una cadena, por ejemplo. Ésta cadena se la pasas como parámetro al método que sea.

Saludos.
  #5 (permalink)  
Antiguo 26/02/2008, 09:44
 
Fecha de Ingreso: junio-2004
Mensajes: 33
Antigüedad: 19 años, 10 meses
Puntos: 0
Re: Listener jcombobox

Al hacer
Mp3Bek[n].getName; //Mp3Bek[n] es el combo Box
me devuelve null
  #6 (permalink)  
Antiguo 26/02/2008, 10:08
 
Fecha de Ingreso: septiembre-2007
Mensajes: 173
Antigüedad: 16 años, 7 meses
Puntos: 0
Re: Listener jcombobox

Porque primero has de ponerle un nombre:D.

JCombobox pepe=new JComboBox();

pepe.setName("juanito");

Saludos.
  #7 (permalink)  
Antiguo 26/02/2008, 10:57
 
Fecha de Ingreso: junio-2004
Mensajes: 33
Antigüedad: 19 años, 10 meses
Puntos: 0
Re: Listener jcombobox

Creo que estaria en las mismas porque el nombre tendria que asignarlo dinamicamente, tambien.
He llegado a solucionar parte de mi problema, creando un vector de combobox y despues en la funcion del actionperfomed me recorro el vector y busco el item seleccionado.
Asi
...
private JComboBox Mp3Bek[] = new JComboBox [150];
public Vector VMp3 = new Vector();
....
public JFrameIntervenciones(Vector asientos, String fecha, String sesion) {
....
while (asi.hasMoreElements())
{
asie = (String) asi.nextElement();
//System.out.println("los asi"+asie);
enl =DatosAsiento(asie, fecha, sesion);

FotoBek[n] = new JLabel();

FotoBek[n].setIcon(new javax.swing.ImageIcon(enl.getStrFoto()));


EmpresaBek[n] = new JLabel();
EmpresaBek[n].setText(enl.getStrEmpresa());

NombreBek[n] = new JLabel();
NombreBek[n].setText(enl.getStrNombre());

ApellidoBek[n] = new JLabel();
ApellidoBek[n].setText(enl.getStrApellido());

Mp3Bek[n] = new JComboBox();


mp3 = Intervencion_persona_sesion(asie, fecha, sesion);

inter = mp3.elements();

while (inter.hasMoreElements())
{
pinter = (String)inter.nextElement();
Mp3Bek[n].addItem(pinter);


}

Mp3Bek[n].addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(ActionEvent e) {

jMp3ActionPerformedActionPerformed(e);
}});


jPanel1.add(FotoBek[n] );
FotoBek[n].setBounds(90, 100+lerropos, 150, 80);

jPanel1.add(EmpresaBek[n] );
EmpresaBek[n].setBounds(240, 155+lerropos, 90, 30);

jPanel1.add(NombreBek[n]);
NombreBek[n].setBounds(440, 155+lerropos, 134, 30);

jPanel1.add(ApellidoBek[n] );
ApellidoBek[n].setBounds(640, 155+lerropos, 90, 30);

jPanel1.add(Mp3Bek[n]);
Mp3Bek[n].setBounds(800, 155+lerropos, 234, 30);

VMp3.add(Mp3Bek[n]);





lerropos = lerropos + 100;

n++;

}


jScrollPane1.setViewportView(jPanel1);

}


private void jMp3ActionPerformedActionPerformed (java.awt.event.ActionEvent e)
{
Enumeration NMp3 = VMp3.elements();
while (NMp3.hasMoreElements())
{
JComboBox cb = (JComboBox) NMp3.nextElement();
if (cb.isFocusOwner())
{
izena =(String)cb.getSelectedItem();
}
}

JFramePlayer p = new JFramePlayer(this.asientos, this.fecha, this.sesion, izena);
p.setVisible(true);
this.setVisible(false);

}



///////////////
igual es un poco tosco no lo se pero funciona.

Muchas gracias por la ayuda,

me has hecho pensar, jeje.

Gracias otra vez

Saludos
  #8 (permalink)  
Antiguo 26/02/2008, 12:26
 
Fecha de Ingreso: septiembre-2007
Mensajes: 173
Antigüedad: 16 años, 7 meses
Puntos: 0
Re: Listener jcombobox

Si te sirve, te paso mi aplicación. Tiene una clase que genera los JLabel (no JComboBox pero es lo mismo) y les asigna un nombre de forma dinámica.
  #9 (permalink)  
Antiguo 26/02/2008, 12:45
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 3 meses
Puntos: 260
Información Re: Listener jcombobox

Código:
public class ComboBoxDemo ... implements ActionListener {
    . . .
        petList.addActionListener(this) {
    . . .
    public void actionPerformed(ActionEvent e) {
        JComboBox cb = (JComboBox)e.getSource();
        String petName = (String)cb.getSelectedItem();
        updateLabel(petName);
    }
    . . .
}
Código:
private void jMp3ActionPerformedActionPerformed (java.awt.event.ActionEvent e) {
  JComboBox cb = (JComboBox) e.getSource();
  izena =(String)cb.getSelectedItem();
}
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 19:07.