Hallo zusammen,
ich habe mehrere Panels auf einem JFrame und würde gerne zwischen ihnen mittels einer Methode wechseln. Leider funktioniert es nicht richtig, wenn ich setVisible(false) setze. Ich habe auch versucht, sie zu entfernen, aber dann werden die neuen Panels nicht angezeigt, sondern laufen nur im Hintergrund. Habt ihr eine Idee für eine Lösung? Hier ist der entsprechende Code:
ich habe mehrere Panels auf einem JFrame und würde gerne zwischen ihnen mittels einer Methode wechseln. Leider funktioniert es nicht richtig, wenn ich setVisible(false) setze. Ich habe auch versucht, sie zu entfernen, aber dann werden die neuen Panels nicht angezeigt, sondern laufen nur im Hintergrund. Habt ihr eine Idee für eine Lösung? Hier ist der entsprechende Code:
Java:
package net.tim.gui;
import net.tim.core.Verwaltung;
import javax.swing.*;
public class Frame extends JFrame {
Verwaltung verwaltung;
public GamePanel gamePanel = new GamePanel(this);
GlassPanel glassPanel = new GlassPanel(gamePanel);
MenuPanel menuPanel = new MenuPanel(this);
public Frame(Verwaltung verwaltung) {
this.verwaltung = verwaltung;
setTitle("A* Pathfinding");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(GamePanel.screenWidth, GamePanel.screenHeight);
setResizable(false);
add(gamePanel);
setGlassPane(glassPanel);
getGlassPane().setVisible(true);
pack();
setLocationRelativeTo(null);
setVisible(true);
}
public void gameEnd(){
glassPanel.gameEnd = true;
glassPanel.repaint();
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
switchToMenu();
}
public void switchToMenu(){
remove(gamePanel);
glassPanel.setVisible(false);
add(menuPanel.panel);
System.out.println("Switched to menu");
}
public void switchToGame(){
menuPanel.panel.setVisible(false);
gamePanel = new GamePanel(this);
add(gamePanel);
remove(menuPanel.panel);
glassPanel.setVisible(true);
glassPanel.gameEnd = false;
glassPanel.repaint();
Verwaltung.gameRunning = true;
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
verwaltung.startGame();
}
public void switchToShop(){
remove(menuPanel.panel);
glassPanel.setVisible(false);
}
public void switchToSettings(){
remove(menuPanel.panel);
glassPanel.setVisible(false);
}
public void switchToCredits(){
remove(menuPanel.panel);
glassPanel.setVisible(false);
menuPanel.panel.setVisible(false);
}
}