簡體   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