Aktualnie używam CardLayout do skakania pomiędzy różnymi gui w mojej grze (main menu, settings, scoreboard etc.):
static JPanel panels = new JPanel();
static CardLayout cl = new CardLayout();
panels.setLayout(cl);
panels.add(new Menu(), "menu");
panels.add(new Game(), "game");
panels.add(new Scoreboard(), "scoreboard");
panels.add(new Settings(), "settings");
panels.add(new Info(), "info");
później w tej samej klasie mam statyczną metodę, która pozwala mi na zmianę JComponentów:
public static void changePanel(String panel){
cl.show(panels, panel);
}
Niestety wszystkie to obiekty są tworzone przy stracie programu.
Chciałbym stworzyć nowy obiekt za każdym razem gdy karta jest zmieniana i usunąć stary żeby nie zjadało to zbyt wiele pamięci. Czy jest to możliwe?