如何在netbeans gui编辑器中将JPanel分配给JFrame?

时间:2013-06-05 12:13:03

标签: java swing netbeans jframe jpanel

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

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

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

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

我该怎么做?

在我写过的JFrame类中:

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

这不起作用,有什么建议吗?

2 个答案:

答案 0 :(得分:2)

  • JPanel默认为FlowLayout LayoutManager,在API中实施

  • JPanel返回零PreferredSize

  • 您无法在JPanel之前将Panel1 = Panel2;添加到另一个JPanel,然后第二个JPanel不会添加到第一个myPanel1.add(myPanel2)Panel

  • 需要java.awt.Panel
  • 使用保留的Java单词和方法名称{{1}},{{1}}

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

答案 1 :(得分:1)

有几件事。

第一句话。使用初始小写字母更好地命名字段,方法和变量。非常广泛的惯例。

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

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

执行菜单项的操作处理:

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

然而,很少在实践中完成。