2016-08-08 42 views
1

Also versuche ich das Panel für meinen JFrame nach 3 Sekunden vom IntroPanel zum Hauptmenü zu wechseln. Aber es scheint nicht das Panel zu entfernen und das andere hinzuzufügen, wenn ich es versuche. Ich bin nicht ganz sicher, wie ich das beheben kann, also würde ich jeden Ratschlag nehmen, um das zu beheben. Vielen Dank!Wie ändere ich das Panel auf dem 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

Verwenden Sie ein [ 'CardLayout'] (http://download.oracle.com/javase/8/docs/api/java/awt/CardLayout.html), wie in [diese Antwort] (http gezeigt: //stackoverflow.com/a/5786005/418556). –

+4

Lesen Sie den Abschnitt aus dem Swing-Lernprogramm zu [Wie man Kartenlayout verwendet] (http://docs.oracle.com/javase/tutorial/uiswing/layout/card.html) für ein funktionierendes Beispiel. Das Tutorial hilft nicht nur bei diesem Problem, es kann auch als Referenz für andere Swing-Grundlagen verwendet werden. – camickr

+2

In 'actionPerfomed' entfernen Sie' mainP' und fügen es erneut hinzu. Dies ist Ihr Problem –

Antwort

0

Können Sie das versuchen?

View.remove(<panel to hide>); 
View.add(<panel to show>);