Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Java (http://www.forosdelweb.com/f45/)
-   -   Listener jcombobox (http://www.forosdelweb.com/f45/listener-jcombobox-560576/)

Rowan 26/02/2008 05:42

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

Ethiel 26/02/2008 07:22

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.

Rowan 26/02/2008 08:30

Re: Listener jcombobox
 
Hola,
Pero como se que ComboBox es el que ha elegido el usuario?

Gracias por contestar

Saludos

Ethiel 26/02/2008 09:26

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.

Rowan 26/02/2008 09:44

Re: Listener jcombobox
 
Al hacer
Mp3Bek[n].getName; //Mp3Bek[n] es el combo Box
me devuelve null

Ethiel 26/02/2008 10:08

Re: Listener jcombobox
 
Porque primero has de ponerle un nombre:D.

JCombobox pepe=new JComboBox();

pepe.setName("juanito");

Saludos.

Rowan 26/02/2008 10:57

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

Ethiel 26/02/2008 12:26

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.

HackmanC 26/02/2008 12:45

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();
}



La zona horaria es GMT -6. Ahora son las 05:07.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.