我在顶部有一个带JMenuBar的JFrame。
我在我的JFrame中间放了一个JPanel并将其命名为 Panel1 。
接下来,我创建了另一个名为 Panel2 扩展JPanel的类,并在其上添加了一些项目。
现在在我的JFrame上,当用户选择了一个JMenuItem我想将 Panel1 分配给我创建的 Panel2 类。因此,我可以以某种方式在我的JFrame中看到其他面板!
我该怎么做?
在我写过的JFrame类中:
JPanel Panel2 = new JPanel();
Panel1 = Panel2;
这不起作用,有什么建议吗?
答案 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 Managers,How to Use Panels和JPanel 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();
}
});
然而,很少在实践中完成。