首页 文章

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

提问于
浏览
2

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

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

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

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

我怎样才能做到这一点?

在我写的JFrame类中:

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

它没有用,有什么建议吗?

2 回答

  • 2
    • JPanel 具有 FlowLayout 默认 LayoutManager ,在API中实现

    • JPanel 返回零 PreferredSize

    • 你不能通过 Panel1 = Panel2; 将一个 JPanel 添加到另一个 JPanel ,然后第二个 JPanel 没有添加到第一个 . JPanel ,需要 myPanel1.add(myPanel2)

    • carrefully with reserved Java words and methods names Panel is java.awt.Panel

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

  • 1

    好几件事 .

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

    在panel2的GUI编辑器中选择"Custom creation code",然后键入 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();
        }
    });
    

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

相关问题