2012-04-28 10 views
5

Tengo un simple JPanel para tres en raya, dibujando líneas ... por lo que la clase TTT extiende JPanel, y contiene un objeto GameLogic dentro.Limpiando mi JFrame & JPanel en un nuevo juego

todo es bueno, la aplicación es un JFrame en Main que agrega TTT y todo bien.

PERO, cuando quiero reiniciar un nuevo juego,
Llamo "reiniciar" en mi TTT que básicamente hace: gameLogic = new GameLogic(); & repintado();

ahora mi matriz de datos está limpio y se debe pintar sólo las líneas ..

cualquier forma en que Windows no se cambia en absoluto.

He intentado todo sin suerte. ¿Alguna sugerencia?

GameBoard.java:

public class GameBoard extends javax.swing.JPanel { 
private GameBoardLogic GameLogic; 

//..... 

public void Restart() 
{ 
    GameLogic = new GameBoardLogic(); 
    removeAll(); 
    repaint(); 
} 

Main.java:

public class Main { 
private static GameBoard TTT; 
private static JFrame application; 

public static void main(String[] args) { 

    application = new JFrame("Tic-Tac-Tow"); 
    TTT = new GameBoard(); 
    application.add(TTT); 
    application.setSize(350, 350); 
    application.setVisible(true); 
    //..... 

    if (JOptionPane.showConfirmDialog(null, "Do you want to play again?") == 
               JOptionPane.YES_OPTION) 
    { 
     application.removeAll(); 
     TTT.Restart(); 
     application.add(TTT); 
     application.validate(); 
    } 
+2

* "Cualquier sugerencia ??" * 1) Para una mejor ayuda antes, publique un [SSCCE] (http://sscce.org/). 2) Arregle ese pegajoso '?' llave. –

+0

¿Vas a publicar un SSCCE? –

Respuesta

6

Para mí siempre trabajaron este

panel.removeAll(); 
//add your elements 
revalidate(); 
repaint(); 
+0

@agrega el código también. Lo siento mKorbel, lo intenté ahora. no funcionó las ventanas no se borrarían. se queda con los sorteos de la victoria ... – zaxy78

+0

Puedes intentar revalidar tanto antes como después de insertar tus elementos. –