2

我有一个顶部带有 JMenuBar 的 JFrame。

我在中间的 JFrame 上放了一个 JPanel 并将其命名为Panel1

接下来,我创建了另一个名为Panel2扩展 JPanel 的类,并在其上放置了一些项目。

现在在我的 JFrame 上,当用户选择我想将Panel1分配给我创建的Panel2类的 JMenuItem 之一时。因此,我可以以某种方式在我的 JFrame 中看到其他面板!

我怎样才能做到这一点?

在我写的 JFrame 类中:

JPanel Panel2 = new JPanel();
Panel1 = Panel2;

没用,有什么建议吗?

4

2 回答 2

2
  • JPanelFlowLayout默认情况下,LayoutManager在 API 中实现

  • JPanel返回零PreferredSize

  • 您不能通过 将一个添加JPanel到另一个Panel1 = Panel2;,然后第二个JPanel不会添加到第一个。JPanel, 是必需的,以myPanel1.add(myPanel2)

  • 小心地使用保留的 Java 字和方法名称Paneljava.awt.Panel

  • 所有重要信息都在 Oracle 教程A Visual Guide to Layout Managers , How to Use PanelsJPanel API

于 2013-06-05T12:23:57.477 回答
1

几件事。

先说一句。最好用首字母小写字母命名字段、方法、变量。非常广泛的约定。

在 panel2 的 GUI 编辑器中选择“自定义创建代码”,然后您可以在其中键入new Panel2().

要动态交换 JPanel panel1 与 Panel2 panel2,覆盖变量将无效;panel1 的对象被添加到 JFrame 的一些 swing Container 中。

在菜单项的动作处理中做:

EventQueue.invokeLater(new Runnable() {
    @Override
    public void run() {
        remove(panel1);
        panel1 = new Panel2();
        add(panel1);
        invalidate();
    }
});

然而很少在实践中完成。

于 2013-06-05T12:30:01.130 回答