我正在制作一个有趣的物理模拟器,当我试图找出所有这些 J 之间的区别时,我正在查找图形教程。有人可以详细说明它们,或者提供指向有用来源的链接吗?
3 回答
这些类是 Java UI 设计的常见扩展点。首先,要意识到他们之间不一定有直接的关系,所以试图找到他们之间的关系可能会适得其反。
JApplet - 一个基类,可让您编写将在浏览器上下文中运行的代码,例如交互式网页。这很酷,但它带来了局限性,这是它在现实世界中表现出色的代价。当您想在网页中拥有自己的 UI 时,通常会使用 JApplet。我一直想知道为什么人们不利用小程序来存储会话状态,因此不需要数据库或 cookie。
JComponent - 打算与 Swing 交互的对象的基类。
JFrame - 用来表示一个窗口应该有的东西。这包括边框(可调整大小的y/n?)、标题栏(应用程序名称或其他消息)、控件(允许最小化/最大化?)和各种系统事件的事件处理程序,如“窗口关闭”(允许应用程序退出吗?)。
JPanel - 用于将其他元素聚集在一起的通用类。这对于使用可视布局或提供的布局管理器之一(例如 gridbaglayout 等)更为重要。例如,您有一个比您保留的区域更大的文本框。将文本框放在滚动窗格中,然后将该窗格放入 JPanel。那么当你放置JPanel时,它在布局方面会更易于管理。
JFrame 和 JApplet 是顶级容器。如果您希望创建桌面应用程序,您将使用 JFrame,如果您计划在浏览器中托管您的应用程序,您将使用 JApplet。
JComponent 是所有 Swing 组件的抽象类,您可以将它用作新组件的基类。JPanel 是一个简单的可用组件,您几乎可以将其用于任何事情。
由于这是一个有趣的项目,对您来说最简单的方法是使用 JPanel,然后将其托管在 JFrame 或 JApplet 中。Netbeans 有一个带有简单示例的 Swing 视觉设计器。
您可能会发现在 Oracle 网站上查找类很有用,例如:
https://docs.oracle.com/en/java/javase/15/docs/api/java.desktop/javax/swing/JFrame.html
在那里你可以看到JFrame
扩展JComponent
和JContainer
。
JComponent
是一个可以绘制的基本对象。JContainer
扩展它,以便您可以向其添加组件。JPanel
并且JFrame
两者都扩展JComponent
,以便您可以向它们添加东西。JFrame
提供一个窗口,而JPanel
只是一个进入窗口内部的面板。