Java中的JPanel与JFrame
Posted
技术标签:
【中文标题】Java中的JPanel与JFrame【英文标题】:JPanel vs JFrame in Java 【发布时间】:2012-10-24 03:03:26 【问题描述】:我正在学习 Java gui。我学习创建窗口的方法是继承或扩展JFrame
类,使用它很好,因为JFrame
包含窗口的所有属性。现在如果我想在这个窗口中添加一些东西,我需要使用add()
方法。但是今天我遇到了JPanel
,它也创建了一个窗口,我们可以通过jpanelObjec.add()
添加东西。
这两种方法有什么区别?它们有什么关联吗?
【问题讨论】:
类似问题:***.com/questions/3497889/… 【参考方案1】:您不应不必要地扩展 JFrame
类(仅当您向 JFrame
类添加额外功能时)
JFrame:
JFrame
扩展了 Component
和 Container
。
它是一个***容器,用于表示一个窗口的最低要求。这包括Border
s、可调整大小(JFrame
是否可调整大小?)、标题栏、控件(允许最小化/最大化?)和各种Event
s 的事件处理程序,如windowClose
、windowOpened
等。
JPanel:
JPanel
扩展 Component
、Container
和 JComponent
它是一个通用类,用于将其他Component
s 组合在一起。
在使用 LayoutManager
s 时很有用,例如GridLayout
f.i 将组件添加到不同的 JPanel
s,然后将其添加到 JFrame
以创建 gui。就Layout
和可重用性而言,它将更易于管理。
这对于在 Swing 中绘画/绘图时也很有用,您可以覆盖 paintComponent(..)
,当然还有双缓冲的全部乐趣。
如果没有***容器(如(JWindow
、Window
、JFrame
Frame
或 Applet
),Swing GUI 就无法存在,而没有JPanel
s 则它可能存在。
【讨论】:
实际上,JFrame 并没有扩展JComponent
和 JContainer
。【参考方案2】:
JFrame
是窗口;它里面可以有一个或多个JPanel
实例。 JPanel
不是窗口。
你需要一个 Swing 教程:
http://docs.oracle.com/javase/tutorial/uiswing/
【讨论】:
以上是关于Java中的JPanel与JFrame的主要内容,如果未能解决你的问题,请参考以下文章
带有 boxLayout 的 JScrollPane 中的 Java 可拖动 JPanel