2012-04-28 14 views
5

Mam prosty JPanel dla kółko i krzyżyk, rysowanie linii ... więc klasa TTT rozszerza JPanel i zawiera wewnątrz obiekt GameLogic.Oczyszczanie mojego JFrame'a i JPanela w nowej grze

wszystko jest w porządku, aplikacja to JFrame w Main, dodając TTT i wszystkie dobre.

ale kiedy chcę, aby ponownie uruchomić nową grę,
nazywam "restart" w moim TTT który basiclly robi: gameLogic = new GameLogic(); & repaint();

teraz moja tablica danych jest czysty i powinien malować tylko linie ..

sposób system Windows nie zostanie zmieniona w ogóle.

Próbowałem wszystkiego bez powodzenia. Jakieś sugestie?

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

* "Wszelkie sugestie ??" * 1) Dla lepszej pomocy wcześniej, opublikuj [SSCCE] (http://sscce.org/). 2) Napraw to lepkie "?" klawisz. –

+0

Czy zamierzasz opublikować SSCCE? –

Odpowiedz

6

Dla mnie zawsze działało to

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

@adresował również kod. Przepraszam mKorbel, wypróbowałem to teraz. nie działa. okna się nie oczyszczą. zostaje z rysunkami zwycięstwa ... – zaxy78

+0

Możesz spróbować rewalidacji zarówno przed wstawieniem elementów, jak i po ich wstawieniu. –