Java - Problema con ActionListener

 
Vista:
sin imagen de perfil

Problema con ActionListener

Publicado por Victor (2 intervenciones) el 02/02/2008 13:56:07
Hola, tengo una aplicación que recorre un árbol de búsqueda.

Le he puesto una interfaz gráfica para que se pueda mostrar por dónde va la búsqueda.

Mi problema es que cada vez que esa búsqueda da un paso, tiene que salir una ventana para que el usuario eliga una opción de un comboBox y cuando le de a aceptar continue el programa, pero no se como hacerlo ya que la ventana se abre pero el programa sigue corriendo sin detenerse debido a que en mi cógido lo que hago es crear un ActionListener en el botón de Aceptar de la ventana y cuando el usuario haga click ahí entre en una nueva función.

Es decir:

public void creaVentana()
{
JFrame nuevaVentana = new JFrame();
JPanel panel = new JPanel();
JButton btn = new JButton("Aceptar");
btn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
botonPulsado();//Funcion a la que me dirigo cuando hacen click
});
JComboBox lista= new JComboBox();
panel.add(lista);
panel.add(btn);
nuevaVentana.add(panel);
getContentPane().add(nuevaVentana);
nuevaVentana.setBounds(100,100,200,200);
nuevaVentana.pack();
nuevaVentana.show();
}


Hay alguna forma de hacer que el programa se pare y hasta que no se haga click en Aceptar no continúe el recorrido del programa?, es decir, al igual que cuando haces un:

JOptionPane.showConfirmDialog(...);

hasta que no le das a algun botón el programa queda bloqueado sin continuar, eso es lo que yo quiero que pase con mi nuevaVentana.

Espero que me haya explicado bien, gracias por su respuesta

Victor
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

RE:Problema con ActionListener

Publicado por chuidiang (950 intervenciones) el 03/02/2008 12:51:10
Hola:

La forma más sencilla sería que usaras el mismo JOptionPane. Usa el método showOptionDialog() en el que puedes pasar varias opciones para que el usuario elija una y se quedará a la espera. Esto reemplazaría al JComboBox.

Si no te vale, tendrás que hacer algo de código. Debes hacer lo siguiente:
- Después de mostrar la ventana con el combo, haz que el proceso se duerma por medio de

synchronized (unObjetoCualquiera)
{
unObjetoCualquiera.wait()
}

- En el JComboBox añade un actionListener, de forma que cuando se elija algo, despierte al proceso anterior. Para despertarlo

synchronized (elMismoObjetoQueUsasteEnElAnterior)
{
elMismoObjetoQueUsasteEnElAnterior.notify();
}

Como ves, es algo más liado.

Se bueno.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar