Java 中的 JPanel vs JFrame

2022-09-01 00:45:10

我正在学习Java gui。我学习创建窗口的方法是继承或扩展类,使用它很好,因为它包含窗口的所有属性。现在,如果我想向此窗口添加一些内容,我需要使用方法。但是今天我遇到了它也创建了一个窗口,我们可以通过以下方式添加内容。JFrameJFrameadd()JPaneljpanelObjec.add()

这两种方法有什么区别?它们是否以某种方式相关?


答案 1

不应不必要地扩展类(仅当向类添加额外功能时)JFrameJFrame

JFrame

JFrame扩展 和 。ComponentContainer

它是一个顶级容器,用于表示窗口的最低要求。这包括 s、可调整大小(是否可调整大小?)、标题栏、控件(允许最小化/最大化?)以及各种事件处理程序(如 等)。BorderJFrameEventwindowClosewindowOpened

JPanel

JPanel扩展 , 和ComponentContainerJComponent

它是一个泛型类,用于将其他 s 组合在一起。Component

  • 当使用时,它很有用,例如 f.i 将组件添加到不同的 s,然后将其添加到 中创建 gui。在可重用性和可重用性方面,它将更易于管理。LayoutManagerGridLayoutJPanelJFrameLayout

  • 它也很有用,当在Swing中绘画/绘画时,您将覆盖并且当然具有双重缓冲的全部乐趣。paintComponent(..)

Swing GUI 在没有顶级容器(如 (、 、 或 ))的情况下不能存在,而在没有 s 的情况下,它可能存在。JWindowWindowJFrameFrameAppletJPanel


答案 2

JFrame是窗口;它可以有一个或多个实例。 不是窗口。JPanelJPanel

你需要一个Swing教程:

http://docs.oracle.com/javase/tutorial/uiswing/


推荐