好的伙计们,需要一些帮助。所以,我正忙着用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);
我没有得到任何错误,它只是没有做它应该做的事:((游戏是其他类的名称)。
任何帮助??
答案 0 :(得分:4)
我有一个主JFrame,(理论上)每个子游戏(和主菜单)也添加不同的JPanels,显然删除了前一个。
你应该使用CardLayout。它可以让您轻松交换面板。
答案 1 :(得分:0)
不太清楚你在问题中的意思。但基本上你是说第二个面板没有显示。你还只能看到第一个面板吗?
在向其添加或删除面板后,应验证框架:
Game.frame.validate();
这将重绘GUI布局。