我是使用java开发GUI的新手,我正在使用netbeans来帮助我设计各种jPanel . 现在我有一个带有jFrame的类,我将在左边放一个菜单,右边有一个jPanel,当有人在左边做出选择时,我想调用jPanel类并将它放在那个面板中在右边 . 我见过各种不同的例子,但我无法让它发挥作用 . 这是我的文件结构的工作原理
-
connector.java(创建与db的连接并调用jframe类)
-
jframe.java(左侧包含菜单,右侧包含空jpanel)
-
panel1.java(我在netbeans中设计的面板类)panel2.java
-
panel3.java
现在,当有人在我的菜单中选择panel1时,如何将panel1放入我的jframe中?
3 回答
您可能希望使用可以在视图(面板)之间切换的CardLayout . 您可以在How to Use CardLayout查看更多信息 . 您只需调用
cardLayout.show(...)
,即可显示所需的面板(可以这么说) .同样对于Netbean构建器工具,您可以看到How to use CardLayout with Netbeans GUI Builder .
另见this post . 您可以将类面板拖放到设计视图中
您可以使用
CardLayout
,也可以使用一些setVisible()调用 . 我'm not sure if you'询问如何设置框架,但你可以用BoxLayout做到这一点:另一种方法是使用CardLayout作为
potentialPanels
面板 .根据您对上述帖子的评论,如果您担心有很多面板,那么您可以使用
ArrayList
来包含所有面板 . 然后,您可以将其中一个面板设置为可见,暂时将其从列表中删除,然后迭代列表的其余部分,将它们全部设置为"invisible",然后再将该可见面板添加到列表中 . 使用CardLayout会更有效率,你可以以相同的方式显示单个面板而其他面板是"hidden",但内置show
功能,避免了ArrayList
的混乱 .完全同意上述内容 . 我非常成功地使用了CardLayout .
但是不要忘记在您更改的任何组件上调用revalidate(无论您是否使用CardLayout) . 这告诉UI它需要更新到屏幕 .