2013-04-01 3 views
0

나는 Java 게임을 만들었고 GameOver 메서드를 구현했습니다. 이것은 내가 게임 오버 방법에 대한 코드입니다 :닫기 Java 프레임

public void gameOver() throws IOException { 
    String message = "Game, Want to try Again?"; 
    String title = "Game Over"; 
    int reply = JOptionPane.showConfirmDialog(frame, message, title, JOptionPane.YES_NO_OPTION); 
    if (reply == JOptionPane.YES_OPTION){ 
     new Game(); 
    } else { 
     this.getSoundEffect().stopAllMusic(); 
     new Main().setVisible(true); 
    } 
} 

내가 가지고있는 문제는 원래 프레임을 닫는 것입니다. 예 : 예를 클릭하면 게임 프레임이 열립니다. 그러나 이미 열려 있으므로 게임의 두 인스턴스가 작동합니다.

그냥 난 다음 옵션을 시도, 너희들 알려 :

frame.dispose(); 

    WindowEvent wev = new WindowEvent(this, WindowEvent.WINDOW_CLOSING); 
    Toolkit.getDefaultToolkit().getSystemEventQueue().postEvent(wev); 

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

나는 또한의 actionPerformed 이벤트를하고 생각했다, 그러나, 나는 인해위한 JOptionPane이 INT 인 할 수 없습니다.

+0

이 것을 확인하고 싶을 수도 있습니다 ... http : //stackoverflow.com/questions/6260855/how-to-clear-reset-a-jframe –

+0

이미 열려있는'Game' 객체에 대한 참조를 보관 했습니까? –

+0

@Aubin, 그러면 전체 시스템이 닫히고 다른 Java 클래스를 열 수 없습니다. –

답변

0

귀하의 gameOver 방법은 다음과 같이해야한다 : 제외

Main mMain ; 
public void gameOver() throws IOException { 
    String message = "Game, Want to try Again?"; 
    String title = "Game Over"; 
    int reply = JOptionPane.showConfirmDialog(frame, message, title, JOptionPane.YES_NO_OPTION); 
    if (reply == JOptionPane.YES_OPTION){ 
     frame.dispose(); 
     frame.setVisible(true); 
    } else { 
     this.getSoundEffect().stopAllMusic(); 
     if(mMain==null) 
     { 
      mMain = new Main(); 
     } 
     mMain.setVisible(true); 
    } 
} 

편집

모든 thse, 당신은 두 변수가 frame 첫 번째는 인스턴스 변수라는 이름의 한 frame = new JFrame("Game"); 및 기타 당신은 final JFrame frame = new JFrame("The Birds Game");입니다 JFrame의 변수 이름을 변경해야합니다.

+0

안녕하세요, 답장을 보내 주셔서 감사하지만 여전히 작동하지 않습니다. 게임이 멈추고 게임이 다시 열립니다. –

+0

전체 코드를 넣을 수 있습니까? –

+0

위를 게시했습니다. –