【问题标题】:Removing a JPanel from a JFrame from a different class(and adding a new one)从不同类的 JFrame 中删除 JPanel(并添加一个新类)
【发布时间】:2014-09-09 15:07:11
【问题描述】:

好的,伙计们,需要一些帮助。所以,我正忙着用Java写一个游戏,用一个主菜单去不同的子游戏(每个子游戏都有自己的类),但我遇到了这个问题:

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

这是主菜单的代码(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 是另一个类的名称)。

有什么帮助吗??

【问题讨论】:

    标签: java swing jframe


    【解决方案1】:

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

    您应该为此使用CardLayout。它可以让您轻松更换面板。

    【讨论】:

    • 好的,谢谢,会试试的。回来说它是否有效。
    • 它不起作用:(我会问一个新问题并发布一个链接。link提前感谢大家的帮助。
    【解决方案2】:

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

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

    Game.frame.validate();
    

    这将重绘 GUI 布局。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-05
      • 2015-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多