JPanel,JFrame,JComponent和JApplet之间的区别

即时制作一个物理模拟器的乐趣,我正在查找graphics教程,当我试图找出所有这些J之间的差异。 有人可以详细说明他们,或者提供一个有用的来源的链接?

这些类是Java UIdevise的常见扩展点。 首先,要意识到他们彼此之间不一定直接有很大的关系,所以试图find他们之间的关系可能会适得其反。

JApplet – 让您编写将在浏览器上下文中运行的代码的基类,例如交互式网页。 这很酷,但它带来了限制,这是它在现实世界中打好的代价。 通常情况下,当您想在网页中拥有自己的用户界面时,使用JApplet。 我一直想知道为什么人们不利用applet来存储session的状态,所以不需要数据库或者cookie。

JComponent – 打算与Swing交互的对象的基类。

JFrame – 用于表示窗口应该具有的东西。 这包括边界(可resize的y / n?),标题栏(应用程序名称或其他消息),控件(最小化/最大化允许?)和各种系统事件的事件处理程序,如“窗口closures”(允许应用程序退出吗?

JPanel – 用于将其他元素聚集在一起的generics类。 这对于使用可视布局或提供的布局pipe理器之一(例如gridbaglayout等)来说更为重要。例如,您有一个比您保留的区域大的文本框。 将文本框放在滚动窗格中,并将该窗格放入JPanel中。 然后当你放置JPanel时,在布局方面将会更易于pipe理。

JFrame和JApplet是顶级容器。 如果你想创build桌面应用程序,你将使用JFrame,如果你打算在浏览器中托pipe你的应用程序,你将使用JApplet。

JComponent是所有Swing组件的抽象类,您可以使用它作为新组件的基类。 JPanel是简单的可用compoent,你几乎可以使用任何东西。

由于这是一个有趣的项目,最简单的方法是使用JPanel,然后将其托pipe在JFrame或JApplet中。 Netbeans以简单的例子为Swing提供了可视化devise器。

您可能会发现查找oracle上的类很有用。 例如:

http://download.oracle.com/javase/1.4.2/docs/api/javax/swing/JFrame.html

在那里你可以看到JFrame扩展了JComponent和JContainer。

JComponent是一个可以绘制的基本对象,JContainer对此进行了扩展,以便您可以向其中添加组件。 JPanel和JFrame都可以扩展JComponent,因为你可以添加东西给他们。 JFrame提供了一个窗口,而JPanel只是一个窗口内的面板。 如果这是有道理的。