从其他类中删除JFrame中的JPanel(并添加一个新的)

时间:2014-09-09 15:07:12

标签: java swing jframe

好的伙计们,需要一些帮助。所以,我正忙着用Java编写一个游戏,使用主菜单去看不同的子游戏(每个都有自己的类),但我遇到了这个问题:

我有一个主JFrame,(理论上)每个子游戏(和主菜单)也添加不同的JPanels,显然删除了前一个。

这是主菜单的代码(mainp是JPanel):     frame.add(mainp);

    mainp.setLayout(new BorderLayout());
    getContentPane().add(mainp);
    GridBagLayout lay = new GridBagLayout();
    GridBagConstraints cons = new GridBagConstraints();
    Game.mainp.setLayout(lay);

    cons.weightx = 0.5;
    cons.gridx = 0;
    cons.gridy = 0;
    Game.mainp.add(ringsb, cons);
    cons.weightx = 0.5;
    cons.gridx = 0;
    cons.gridy = 1;
    Game.mainp.add(xob, cons);

到目前为止一切都很好(ringb和xob是按钮),但是当我运行此代码时(来自不同的类(和文件)):

ringsp.setLayout(lay);
    cons.weightx = 0.5;
    cons.gridx = 0;
    cons.gridy = 0;
    ringsp.add(Item1, cons);
    cons.weightx = 0.5;
    cons.gridx = 0;
    cons.gridy = 1;
    ringsp.add(Item2, cons);
    cons.weightx = 0.5;
    cons.gridx = 0;
    cons.gridy = 2;
    ringsp.add(Item3, cons);
    Game.frame.remove(Game.mainp);
    Game.frame.add(ringsp);

我没有得到任何错误,它只是没有做它应该做的事:((游戏是其他类的名称)。

任何帮助??

2 个答案:

答案 0 :(得分:4)

  

我有一个主JFrame,(理论上)每个子游戏(和主菜单)也添加不同的JPanels,显然删除了前一个。

你应该使用CardLayout。它可以让您轻松交换面板。

答案 1 :(得分:0)

不太清楚你在问题中的意思。但基本上你是说第二个面板没有显示。你还只能看到第一个面板吗?

在向其添加或删除面板后,应验证框架:

Game.frame.validate();

这将重绘GUI布局。