Java中的JPanel vs JFrame

Nar*_*uto 37 java swing jpanel jframe

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

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

Dav*_*amp 69

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

JFrame:

JFrame延伸ComponentContainer.

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

JPanel:

JPanel延伸Component,ContainerJComponent

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

  • 当使用LayoutManager例如GridLayoutfi将组件添加到不同的JPanels时,它将被用于将其添加JFrame到创建gui中.它在Layout可用性和可重用性方面更易于管理.

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

摆动GUI不能没有像(顶层容器存在JWindow,Window,JFrame FrameApplet),而可以在不存在它JPanel秒.

  • 实际上,[JFrame](http://docs.oracle.com/javase/7/docs/api/javax/swing/JFrame.html)不会扩展`JComponent`和`JContainer`. (3认同)

duf*_*ymo 43

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

你需要一个Swing教程:

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