2017-03-25 17 views
0

私が構築しているゲームは、startGame()が呼び出されたときにスタートボタンがクリックされた後にパネルを切り替えることです。プログラムは、ボタンがクリックされたときにフリーズし、何もしません。ここで私のゲームのパネルを切り替えることができません

は、コードスニペットです:

public class ArtilleryGame extends JFrame { 
    private static final long serialVersionUID = 1L; 
    //TODO: fix clouds from updating with background 

    static StartPanel startPanel = new StartPanel(); 
    public ArtilleryGame() throws InterruptedException 
    { 
     setSize(898,685); 
     setLocationRelativeTo(null); 
     setTitle("Tank Game"); 
     setResizable(false); 
     setDefaultCloseOperation(EXIT_ON_CLOSE); 

     URL sound = this.getClass().getResource("Sounds/Intro_Screen.wav"); 

     AudioClip drop = Applet.newAudioClip(sound); 
     drop.loop(); 
     drop.play(); 

     add(startPanel); 
     //add(new GamePanel()); 
     buttons(); 

     setVisible(true); 
    } 
    private void buttons() 
    { 
     URL startURL = this.getClass().getResource("imgg/StartBtn.png"); 
     BufferedImage startI = new BufferedImage(170, 62, BufferedImage.TYPE_INT_RGB); 
     try 
     { 
      startI = ImageIO.read(startURL); 
     } catch (IOException e) 
     { 
      e.printStackTrace(); 
     } 
     ImageIcon startImg = new ImageIcon(startI); 

     JButton startBtn = new JButton(startImg); 
     startBtn.setSize(170, 62); 
     startBtn.setBorder(BorderFactory.createEmptyBorder()); 
     startBtn.addActionListener(new ActionListener() 
     { 

      @Override 
      public void actionPerformed(ActionEvent e) 
      { 
       startGame(); 
      } 
     }); 

     startBtn.setLocation(365, 310); 
     StartPanel.background.add(startBtn); 
    } 

    public void startGame() 
    { 
     remove(startPanel); 
     add(new GamePanel()); 
    } 

    public static void displayCredits() 
    { 
     JOptionPane.showMessageDialog(null, new CreditsPanel(), "Tank Game", JOptionPane.PLAIN_MESSAGE); 
    } 
    public static void main(String[] args) throws InterruptedException 
    { 
     new ArtilleryGame(); 
     //displayCredits(); 
    } 
} 

答えて

0

CardLayoutを使用してください。 CardLayoutを使用すると、パネルを簡単に交換できます。

詳細と作業例については、How to Use CardLayoutのSwingチュートリアルのセクションをお読みください。

+0

ありがとう –

関連する問題