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

时间:2010-08-16 22:21:11

标签: java jframe jpanel japplet jcomponent

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

3 个答案:

答案 0 :(得分:41)

这些类是Java UI设计的常见扩展点。首先,要意识到他们并不一定要直接相互关联,所以试图找到他们之间的关系可能会适得其反。

JApplet - 一个基类,让您编写将在浏览器上下文中运行的代码,例如交互式网页。这很酷,除了它带来的限制,这是它在现实世界中表现出色的价格。通常,当您希望在网页中拥有自己的UI时,可以使用JApplet。我一直想知道为什么人们不利用applet来存储会话状态,因此不需要数据库或cookie。

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

JFrame - 用于表示窗口应具有的内容。这包括边框(可调整大小的y / n?),标题栏(应用程序名称或其他消息),控件(允许最小化/最大化?),以及各种系统事件的事件处理程序,如“关闭窗口”(允许应用程序退出?)。

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

答案 1 :(得分:19)

JFrame和JApplet是顶级容器。如果您希望创建桌面应用程序,则将使用JFrame,如果您计划在浏览器中托管应用程序,则将使用JApplet。

JComponent是所有Swing组件的抽象类,您可以将它用作新组件的基类。 JPanel是一个简单易用的组件,几乎可以用于任何事情。

由于这是一个有趣的项目,最简单的方法是使用JPanel,然后将其托管在JFrame或JApplet中。 Netbeans有一个Swing的视觉设计师,有简单的例子。

答案 2 :(得分:5)

您可能会发现在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只是一个进入窗口的面板。如果这是有道理的。