我有一个关于java GUI的一般问题。如果我想要添加到JFrame中的几个组件,我应该将它们直接放在JFrame中,还是将它们添加到JPanel中,然后将面板添加到框架中?如果首先将组件添加到JPanel是最好的,为什么?我通常这样做,然后我明白我不知道为什么/如果这是更可选的,然后直接添加到框架。 JFrame也有布局管理器,因此可以将它们放在正确的位置。
答案 0 :(得分:2)
向框架添加组件时,将组件添加到框架的content pane
。内容窗格是JPanel。内容窗格的默认布局是BorderLayout。
直接向框架添加组件时,实际上是将组件添加到面板中。因此,您拥有面板的所有布局功能。因此,实际上,向框架添加组件或使用您自己的面板作为框架的内容窗格没有区别。
您真正需要决定的是,您是否真的需要以任何理由访问内容窗格?有关详细信息,请查看Using Top Level Containers上Swing教程中的部分。本教程对这个主题进行了一些思考。
我不确定您为什么需要替换内容窗格的组件。如果您阅读此论坛上的帖子,建议总是使用CardLayout
来交换面板,因此您永远不会直接处理内容窗格。
答案 1 :(得分:1)
正如您所正确提到的,JFrame是具有包括布局管理器在内的所有功能的常规容器。除非您计划在其他地方使用相同的视图,否则没有理由拥有其他包装器。