我正在学习Java gui。我学习创建窗口的方法是继承或扩展JFrame
类,使用它很好,因为它JFrame
包含窗口的所有属性。现在如果我想在这个窗口中添加一些东西,我需要使用add()
方法。但是今天我遇到了JPanel
它也创建了一个窗口,我们可以通过jpanelObjec.add()
.
这两种方法有什么区别?它们有某种关联吗?
您不应JFrame
不必要地扩展该类(仅当您向JFrame
该类添加额外功能时)
框架:
JFrame
扩展Component
和Container
.
它是一个顶级容器,用于表示窗口的最低要求。这包括Border
s、可调整大小(是否可调整JFrame
大小?)、标题栏、控件(允许最小化/最大化?)和各种Event
s 的事件处理程序windowClose
等windowOpened
。
面板:
JPanel
扩展Component
,Container
并且JComponent
它是一个通用类,用于将其他Component
s 组合在一起。
在使用 s 时很有用,LayoutManager
例如GridLayout
fi 将组件添加到不同JPanel
的 s 中,然后将其添加到 中JFrame
以创建 gui。它将在可Layout
重用性和可重用性方面更易于管理。
在 Swing 中绘画/绘图时,它也很有用,您可以覆盖paintComponent(..)
并且当然可以享受双缓冲的全部乐趣。
Swing GUI 不能没有像 ( 、 或 ) 这样的顶级容器JWindow
而存在Window
,但它可能没有s 存在。JFrame
Frame
Applet
JPanel
JFrame
是窗户;它内部可以有一个或多个JPanel
实例。 JPanel
不是窗户。
你需要一个 Swing 教程: