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