2016-08-08 7 views
1

私はIntroPanelからメインメニューパネルまで3秒後にJFrameのパネルを変更しようとしています。しかし、それをやろうとすると、パネルを削除してもう一方を追加するようには見えません。私はこの問題をどのように修正できるのかよく分かりませんので、これを修正するためのアドバイスをします。ありがとうございました!JFrameのパネルを変更するにはどうすればよいですか?

package gamecs245; 
import javax.swing.*; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
/** 
* 
* @author ozhang 
*/ 
public class View extends JFrame { 

IntroPanel introP = new IntroPanel(); 
MainMenuPanel mainP = new MainMenuPanel(); 
CreditsPanel creditP = new CreditsPanel(); 
private Timer timer; 
private int counter = 3; 
private final int delay = 1000; 

public View(){ 

startUp(); 
add(introP); 

    ActionListener action = new ActionListener() 
    { 
     @Override 
     public void actionPerformed(ActionEvent event) 
     { 
      if(counter == 0) 
      { 
       timer.stop(); 
       System.out.println("Panel added"); 
       remove(mainP); 
       add(mainP); 

      } 
      else 
      { 
       System.out.println(counter); 
       counter--; 
      } 
     } 
    }; 

    timer = new Timer(delay, action); 
    timer.setInitialDelay(0); 
    timer.start(); 



} 

private void startUp(){ 
    setVisible(true); 
    setFrameDimensions(); 
    setCloseOperation(); 
    setFrameTitle(); 
    setLocationRelativeTo(null); 

} 

private void removeIntro(){ 
    remove(introP); 
} 

private void setFrameDimensions(){ 
    setSize(600,400); 
} 

private void setCloseOperation(){ 
    setDefaultCloseOperation(EXIT_ON_CLOSE); 
} 

private void actionPerformed(){ 

} 

private void setFrameTitle(){ 
    setTitle("CS245 Project"); 
} 

} 
+4

[この回答(HTTPに示すように[ 'CardLayout'(http://download.oracle.com/javase/8/docs/api/java/awt/CardLayout.html)を使用。 //stackoverflow.com/a/5786005/418556)。 –

+4

動作例については、[カードレイアウトの使い方](http://docs.oracle.com/javase/tutorial/uiswing/layout/card.html)のSwingチュートリアルのセクションを参照してください。このチュートリアルでは、この問題の解決に役立つだけでなく、他のSwingの基礎のリファレンスとしても使用できます。 'actionPerfomed'の – camickr

+2

を削除して' mainP'を削除してもう一度追加します。 Mabyeこれはあなたの問題です –

答えて

0

これを試すことができますか?

View.remove(<panel to hide>); 
View.add(<panel to show>); 
関連する問題