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