Java JPanel、JFrame、JComponent和JApplet之间的区别

Java JPanel、JFrame、JComponent和JApplet之间的区别,java,jframe,jpanel,japplet,jcomponent,Java,Jframe,Jpanel,Japplet,Jcomponent,我正在做一个物理模拟器来取乐,当我试图找出所有这些J之间的区别时,我正在查找图形教程。 是否有人可以详细介绍这些课程,或者提供一个指向有用资源的链接?您可能会发现在Oracle网站上查找这些课程很有用,例如: 在那里您可以看到JFrame扩展了JComponent和JContainer JComponent是可以绘制的基本对象JContainer扩展了此功能,以便您可以向其中添加组件JPanel和JFrame都扩展了JComponent,这样您就可以向它们添加内容了JFrame提供了一个窗口,

我正在做一个物理模拟器来取乐,当我试图找出所有这些J之间的区别时,我正在查找图形教程。
是否有人可以详细介绍这些课程,或者提供一个指向有用资源的链接?

您可能会发现在Oracle网站上查找这些课程很有用,例如:

在那里您可以看到
JFrame
扩展了
JComponent
JContainer


JComponent
是可以绘制的基本对象<代码>JContainer扩展了此功能,以便您可以向其中添加组件
JPanel
JFrame
都扩展了
JComponent
,这样您就可以向它们添加内容了
JFrame
提供了一个窗口,而
JPanel
只是一个进入窗口的面板。

JFrame和JApplet是顶级容器。若你们想创建一个桌面应用程序,你们将使用JFrame,若你们计划在浏览器中托管你们的应用程序,你们将使用JApplet

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


因为这是一个有趣的项目,最简单的方法就是使用JPanel,然后在JFrame或JApplet中托管它。Netbeans有一个用于Swing的可视化设计器,其中包含一些简单的示例。

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

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

JComponent-用于与Swing交互的对象的基类

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


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

作为旁注,继承链对于一些Swing组件来说是荒谬的。它倾向于使IDE中的代码完成变得无用,并使Javadoc变得混乱。他们真的需要重写这一点,我想指出,JFrame并没有扩展JComponent或JContainer,而是按顺序扩展java.awt.Container和java.awt.Component。@他们一定使JFrame不像我想象的那样依赖Swing。由于它使用AWT,我想知道您是否可以在JApplet中使用JFrame。