Parámetros para muestra y procesamiento de datos en diferentes ventanas

Hola nuevamente, el otro problema que tengo se trata de actualizar dinámicamente (cada vez que ocurra un evento) los datos de varias ventanas simultánemente...
He hecho consultas en foros de java y me han respondido pero me han hablado de usar la clase Observer, de JPanel etc
Pero yo sólo tengo un manejo muy básico de ventanas.
Para abrir las ventanas utilizo en mi método main
new Ventana(). Show()
new Ventana2(). Show() etc
después de abrirlas cómo lo hago para actualizarlas sin tener q abrir una nueva ventana?
Dentro de mis rudimentarios conocimientos podría pasarle parámetros a las ventanas para que los procesen y los muestren pero una vez que la ventana ya se abrió no se me ocurre como modificarla.
Eso pues, chau

1 Respuesta

Respuesta
1
Es muy sencillo, veras :) Cuando tu creas una ventana en Java, le dices qué componentes va a tener. Diseñas sus Label, sus TextField... todo eso :) Bueno, efectivamente, para mostrar la ventana utilizas el método show, y una vez que la ventana aparece es el usuario el que toma el control.
Lo que yo haría sería tener un programa principal del que surgen todas esas ventanas extras. Imagínate, una clase "ControlPrincipal" que tiene como propiedades, entre otras cosas "Ventana1", "Ventana2", "Ventana3"... A su vez, cada uno de estos objetos "VentanaX" tendría como propiedad una referencia a la clase "ControlPrincipal"
Imaginate que, cuando ocurre un evento en "Ventana2" tienes que modificar algo en "Ventana1". Lo que tendrías que hacer es, al capturar el evento en "Ventana2", llamar a un método de "ControlPrincipal" y, a través de él, llamar a un método de "Ventana1" para que modifique algún dato.
Modificar datos dentro de una ventana se hace igual que cuando diseñas la ventana. Una vez que conoces los componentes de dicha ventana, simplemente tienes que llamar a los métodos de esos componentes para modificar su aspecto/contenido.
Imaginate que dentro de "Ventana1" tienes un TextField que se llama "nombre_usuario". Lo que quieres es modificar el contenido de ese TextField por el de "Manolito Perez", que es el que el usuario a escrito en "Ventana2". Simplemente tendrías que llamar al método "setText" de "nombre_usuario" y escribir ese texto :)
La cosa sería:
class ControlPrincipal
{
...
Ventana ventana1;
Ventana ventana2;
Ventana ventana3;
...
public void crearVentanas()
{
...
ventana1.show();
ventana2.show();
ventana3.show();
...
}
public void controlVentanas(int tipo_de_control, Object dato)
{
...
if(tipo_de_control==CAMBIAR_NOMBRE_DE_USUARIO)
{
ventana1.cambiarNombre((String)dato);
}
...
}
...
}
class Ventana1
{
...
ControlPrincipal padre;
TextField nombre_usuario;
...
public void cambiarNombre(String nombre)
{
...
nombre_usuario.setText(nombre);
...
}
...
}
class Ventana2
{
...
public ControlPrincipal padre;
...
public void listener_de_eventos(...)
{
...
if(evento=___)
{
padre.controlVentanas(CAMBIAR_NOMBRE_DE_USUARIO, "Manolito Perez");
}
...
}
Si necesitas cualquier aclaración o te surgen más dudas, ya sabes donde encontrarme :)
Te adoro!
Muchísimas gracias ha funcionado de maravilla... no era tan difícil después de todo ;) muy buena y detallada tu explicación
Se despide un alma agradecida
Camellia

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas