44

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

这两种方法有什么区别?它们有某种关联吗?

4

2 回答 2

80

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

框架

JFrame扩展ComponentContainer.

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

面板

JPanel扩展ComponentContainer并且JComponent

它是一个通用类,用于将其他Components 组合在一起。

  • 在使用 s 时很有用,LayoutManager例如GridLayoutfi 将组件添加到不同JPanel的 s 中,然后将其添加到 中JFrame以创建 gui。它将在可Layout重用性和可重用性方面更易于管理。

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

Swing GUI 不能没有像 ( 、 或 ) 这样的顶级容器JWindow而存在Window,但它可能没有s 存在。JFrame FrameAppletJPanel

于 2012-11-03T19:00:51.263 回答
51

JFrame是窗户;它内部可以有一个或多个JPanel实例。 JPanel不是窗户

你需要一个 Swing 教程:

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

于 2012-11-03T19:00:08.600 回答