在CardLayout中更换卡片时如何创建新对象?

时间:2015-02-28 10:42:09

标签: java swing object cardlayout

目前我使用CardLayout在游戏中的不同guis之间跳转(主菜单,设置,记分牌等):

    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");

然后在同一个班级我得到了静态方法,允许我在游戏的JComponents(菜单,游戏,记分牌,设置,信息)之间跳转。

public static void changePanel(String panel){
    cl.show(panels, panel);
}

不幸的是,所有这些对象都是在游戏开始时创建的。 我需要在每次更换卡时创建新对象并删除旧对象以节省内存。这可以通过吗?

1 个答案:

答案 0 :(得分:0)

您最好的选择是调用System.gc(),这只是对垃圾收集器的一个提示,您希望它能够进行收集。由于垃圾收集器不确定,因此无法强制立即收集。