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");
}
}
[この回答(HTTPに示すように[ 'CardLayout'(http://download.oracle.com/javase/8/docs/api/java/awt/CardLayout.html)を使用。 //stackoverflow.com/a/5786005/418556)。 –
動作例については、[カードレイアウトの使い方](http://docs.oracle.com/javase/tutorial/uiswing/layout/card.html)のSwingチュートリアルのセクションを参照してください。このチュートリアルでは、この問題の解決に役立つだけでなく、他のSwingの基礎のリファレンスとしても使用できます。 'actionPerfomed'の – camickr
を削除して' mainP'を削除してもう一度追加します。 Mabyeこれはあなたの問題です –