Java - Problemas al pasar de nivel

 
Vista:
sin imagen de perfil
Val: 55
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Problemas al pasar de nivel

Publicado por Daniel (19 intervenciones) el 13/06/2019 17:49:05
Hola necesito ayuda para dos proyecto de fin de curso uno es el pacman y el otro es el boxWorld:
todos sus componentes y niveles están bien pero el problema en los dos es como pasar al siguiente nivel
e intentado incluso ocultar el JFrame original y hacer visible el otro nivel pero no logro hacerlo correr bien
podrián ayudarme?
este es el metodo que he estado usando
removeAll();
setVisible(false);
Tablero2 t =new Tablero2();
t.setVisible(true);
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
1
Responder
Imágen de perfil de Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Problemas al pasar de nivel

Publicado por Kabuto (1381 intervenciones) el 13/06/2019 21:19:04
En teoría, la aplicación solo puede tener un único JFrame.
Para mostrar otros "marcos" puedes usar un JDialog, que es de facto muy similar al JFrame, pero puedes tener varios y hacerlos visibles o invisibles tanto como se quiera.
Incluso al mostrar un JDialog puedes ocultar el JFrame principal y luego hacerlo de nuevo visible cuando quieras.
Así cada nivel podría ser un JDialog.

O tal vez otra opción sea sustituir el "contenedor" del JFrame principal

Si a Tablero2 le pones un método que devuelva su contenedor (suponiendo que Tablero2 hereda (extends) de JFrame)
1
2
3
public Container getContenedor() {
    return this.getContentPane();
}

Quizás puedas recuperarlo para sustituirlo por el del marco principal:

1
2
Tablero2 t =new Tablero2();
setContentPane(t.getContenedor());

Pero todo eso son supuestos.
Puesto que nunca he hecho un juego y sin ver tu código ni nada, no se si estas son las formas ideales de conseguir lo que buscas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil
Val: 55
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Problemas al pasar de nivel

Publicado por Daniel (19 intervenciones) el 13/06/2019 21:44:11
Muchisimas gracias.
si los tableros fueran extends JPanel seria el mismo resultado?
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
Imágen de perfil de Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Problemas al pasar de nivel

Publicado por Kabuto (1381 intervenciones) el 13/06/2019 22:18:29
Mmmmhh.. no.

Pero entonces creo que tras hacer removeAll() podrías añadir el nuevo tablero, si dices que heredan de JPanel

1
2
removeAll();
add(new Tablero2());

Aunque si son JPanel, podrías hechar un vistazo al CardLayout.
Este layout te permite añadir una serie de JPanel, cada uno identificado con un String como nombre y tu decides en todo momento cual quieres que sea visible sin tener que cambiar de marco ni nada.

Aplicando esto al JFrame principal y suponiendo que Tablero1, Tablero2, etc... con clases que extends JPanel...
1
2
3
4
5
CardLayout tableros =new CardLayout();
setLayout(tableros);
add( new Tablero1(), "nivel 1");
add( new Tablero2(), "nivel 2");
add( new Tablero3(), "nivel 3");

Luego con el metodo show() se puede ir de un nivel a otro
1
2
3
4
5
6
7
...
.....
 
tableros.show(this, "nivel 2");
...
....
tableros.show(this, "nivel 3");

El this es para hacer referencia al contenedor al que se ha aplicado este layout, en mi ejemplo se supone que es el JFrame principal.

Si tuviera otro nombre el contenedor que recibe el layout, yo que se, por ejemplo ventanaJuego:
1
2
3
4
5
6
7
8
CardLayout tableros =new CardLayout();
ventanaJuego.setLayout(tableros);
ventanaJuego.add( new Tablero1(), "nivel 1");
ventanaJuego.add( new Tablero2(), "nivel 2");
ventanaJuego.add( new Tablero3(), "nivel 3");
......
.......
tableros.show(ventanaJuego, "nivel 3");

En fín, si buscas ejemplos por Google seguro que lo explican mejor que yo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
3
Comentar
sin imagen de perfil
Val: 55
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Problemas al pasar de nivel

Publicado por Daniel (19 intervenciones) el 13/06/2019 23:31:18
Gracias ya está resuelt,o llevo solo un día subscrito y veo que ayudas mucho a la gente nunca pares de hacerlo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar