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

And*_*roo 43 java jcomponent jpanel jframe japplet

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

Kel*_*nch 41

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

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

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

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

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


小智 19

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

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

由于这是有趣的项目,最简单的方法是使用JPanel,然后在JFrame或JApplet中托管它.Netbeans为Swing提供了视觉设计师的简单例子.


Ult*_*ent 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只是一个进入窗口的面板.如果这是有道理的.

  • 作为旁注,继承链对于一些Swing组件来说是荒谬的.它倾向于使IDE中的代码完成无用以及混乱javadocs.他们真的需要重写那件事 (3认同)