Java - Como genero evento en Panel para que recoja jFrame

 
Vista:

Como genero evento en Panel para que recoja jFrame

Publicado por Rafa (15 intervenciones) el 08/10/2008 19:50:37
Hola, tengo una aplicacion que tiene un JFrame que contiene dos JPanel, el principal y uno por debajo. En el JPanel principal voy metiendo las clases que he creado que derivan de JPanel (por ejemplo JPanel mostrardatos, JpanelValidarUsuario...).

En el JPanelValidarUsuario quiero que cuando el usuario se valide correctamente genere un evento que el JFrame pueda recoger y actualice el menú.

Como hago para generar el evento y conseguir que el JFrame lo coja?

Gracias, saludos
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

RE:Como genero evento en Panel para que recoja jFr

Publicado por Mario (199 intervenciones) el 09/10/2008 10:32:10
Cuando yo quiero hacer algo parecido, para pasar de los eventos, hago algo distinto.
Para explicartelo, vamos a ir suponiendo varias cosillas.
1.- Tienes un JFrame, llamado VentanaPrincipal, donde tienes todos los JPanel que necesitas de la clase que necesites. Esta VentanaPrincipal tendrá un método llamado actualizarMenu( ).
2.- Tienes un JPanel PanelValidacion, en el que efectúas una serie de acciones, que al concluirlas, quieres que se genere cierta acción en la VentanaPrincipal.

Pues bien, la clave estar en hacer lo siguiente.
El PanelValidacion tiene que tener un atributo que haga referencia al JFrame que necesita recibir esa información. Esto lo haces creando un atributo de tipo VentanaPrincipal dentrl de PanelValidacion, podrías llamarlo parentFrame por ejemplo. Debes hacer el get y set correspondiente y, si es necesario, un constructor en el que le pases por parámetro el JFrame padre.

Una vez hecho eso, ya lo tienes casi todo. Solamente te falta llamar desde el método que te interese de PanelValidacion al método actualizarMenu( ) de su JFrame padre.
Algo así: parentFrame.actualizarMenu( );

Si necesitas pasarle un id de usuario, un nombre, o cualquier otro dato, pues por supuesto puedes hacer ese método actualizarMenu( ) a tu medida, recibiendo los parámetros que te hagan falta.

Creo que es una solución que te valdría bastante bien y te quitas el engorro de creación y manejo de eventos, aunque realmente sería lo más elegante.

Espero que te pueda servir de ayuda. Si tienes alguna duda al respecto no dudes en consultarme.

Coméntanos por qué solución te decantas ; )
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

RE:Como genero evento en Panel para que recoja jFr

Publicado por Rafa (15 intervenciones) el 09/10/2008 11:12:51
Hola, gracias por tu ayuda. Al final ayer a última hora lo logré solucionar.

Había pensado en tu solución pero como se trata de mi PFC de 5 me están muy encima porque se supone que se debe tener manejo avanzado de Java.

Al final logré crear el evento y que lo escuchase jeje :)

Lo que hice fue que el FramePrincipal (realmente es un singleFrameApplication pero para el caso es lo mismo) implementase PropertyChangeListener es decir que escuchase eventos de cambio de propiedad. Luego en el panel cree puse un atributo del tipo PropertyChangeSupport y añadí los siguientes metodos:

public void setValidado(boolean nuevoValor) {
boolean b = validado;
validado = nuevoValor;
propertyChangeListeners.firePropertyChange("logged", new Boolean(b), new Boolean(nuevoValor));
}

@Override
public synchronized void removePropertyChangeListener(PropertyChangeListener l) {
propertyChangeListeners.removePropertyChangeListener(l);
}

@Override
public synchronized void addPropertyChangeListener(PropertyChangeListener l) {
propertyChangeListeners.addPropertyChangeListener(l);
}

Cuando llamo a setValidado se lanza el evento y el listener de principal ejecuta la rutina contenida en public void propertyChange(PropertyChangeEvent e).

Os dejo el enlace por el que me guié por si alguien quiere probar a hacer lo mismo:

http://www.sc.ehu.es/sbweb/fisica/cursoJava/applets/javaBeans/beanJB/beanJB.htm

Gracias por la respuesta :)

Un saludo
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

RE:Como genero evento en Panel para que recoja jFr

Publicado por Mario (199 intervenciones) el 09/10/2008 11:25:19
Pues nada, me alegro que lo solucionases.

Realmente el tratarlo con eventos es mucho más elegante, efectivo y lógico, pero a veces resulta muy engorroso, por eso te aporté esa idea.

Gracias por el aporte de código y la dirección, seguro que a muchos les sirve de gran utilidad, yo mismo voy a echarle un vistazo ; )

Un saludo y suerte!
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