[英]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.