Java中的JPanel vs JFrame

时间:2012-11-03 18:57:51

标签: java swing jframe jpanel

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

这两种方法有什么区别?他们是否有某种关系?

2 个答案:

答案 0 :(得分:65)

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

<强>的JFrame

JFrame扩展了ComponentContainer

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

<强>的JPanel

JPanel延伸ComponentContainerJComponent

这是一个用于将其他Component组合在一起的通用类。

  • 使用LayoutManager时非常有用。 GridLayout f.i将组件添加到不同的JPanel,然后将其添加到JFrame以创建gui。它在Layout和可重用性方面更易于管理。

  • 在Swing中绘画/绘画时,它也会有用,你会覆盖paintComponent(..),当然还有双重缓冲的全部乐趣。

如果没有像(JWindowWindowJFrame FrameApplet这样的顶级容器,则不能存在Swing GUI,而它可能不存在JPanel秒。

答案 1 :(得分:41)

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

你需要一个Swing教程:

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