2012-04-28 41 views
5

Tôi có một JPanel đơn giản cho tic-tac-toe, các đường vẽ ... vì vậy lớp TTT mở rộng JPanel và giữ một đối tượng GameLogic bên trong.Xóa JFrame & JPanel của tôi trong một trò chơi mới

tất cả đều tốt, ứng dụng là một JFrame trong việc thêm TTT và tất cả đều tốt.

NHƯNG, khi tôi muốn khởi động lại một trò chơi mới,
Tôi gọi "khởi động lại" trong TTT của tôi, điều cơ bản là: gameLogic = new GameLogic(); & repaint();

bây giờ mảng dữ liệu của tôi sạch sẽ và nó chỉ vẽ đường kẻ.

Mọi cách Windows không thay đổi gì cả.

Tôi đã thử mọi thứ không có may mắn. Bất kỳ đề xuất nào?

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

* "Mọi góp ý ??" * 1) Để được trợ giúp tốt hơn sớm hơn, đăng một [SSCCE] (http://sscce.org/). 2) Khắc phục sự cố đó '?' Chìa khóa. –

+0

Bạn sẽ đăng SSCCE? –

Trả lời

6

Đối với tôi luôn luôn làm việc này

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

@ cũng đã thêm mã. Xin lỗi mKorbel, đã thử nó ngay bây giờ. không làm việc. các cửa sổ sẽ không rõ ràng. ở lại với các bản vẽ chiến thắng .... – zaxy78

+0

Bạn có thể thử đặt xác nhận lại cả trước và sau khi chèn các phần tử của bạn. –

Các vấn đề liên quan