繁体   English   中英

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

[英]Removing a JPanel from a JFrame from a different class(and adding a new one)

好的,在这方面需要一些帮助。 因此,我正忙着用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);

到目前为止一切都很好(ringsb和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);

我没有任何错误,只是没有做应该做的事:((Game是另一个类的名称)。

有帮助吗?

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

您应该为此使用CardLayout 这将使您轻松交换面板。

不太清楚您在说什么的意思。 但基本上您是说第二个面板没有显示。 您仍然只看到第一个面板吗?

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

Game.frame.validate();

这将重新绘制GUI布局。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM