JPanel、JFrame、JComponent 和 JApplet 之间的区别
我正在制作一个物理模拟器来娱乐,当我试图找出所有这些 J 之间的区别时,我正在查找图形教程。 有人可以详细说明它们或者提供有用来源的链接吗?
I'm making a physics simulator for fun and I was looking up graphics tutorials when I tried to figure out the difference between all these J's.
Can somebody elaborate on them or perhaps provide a link to a helpful source?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这些类是 Java UI 设计的常见扩展点。首先,要意识到他们之间不一定有太多直接关系,因此试图找到他们之间的关系可能会适得其反。
JApplet - 一个基类,可让您编写在浏览器上下文中运行的代码,例如交互式网页。这很酷,但它带来了局限性,这是它在现实世界中发挥良好的代价。通常,当您想在网页中拥有自己的 UI 时,会使用 JApplet。我一直想知道为什么人们不利用小程序来存储会话状态,这样就不需要数据库或 cookie。
JComponent - 打算与 Swing 交互的对象的基类。
JFrame - 用于表示窗口应具有的内容。这包括边框(可调整大小是/否?)、标题栏(应用程序名称或其他消息)、控件(允许最小化/最大化吗?)以及各种系统事件的事件处理程序,例如“窗口关闭”(允许应用程序退出吗?)。
JPanel - 用于将其他元素聚集在一起的通用类。这对于使用视觉布局或提供的布局管理器之一(例如 gridbaglayout 等)更为重要。例如,您有一个比您保留的区域更大的文本框。将文本框放入滚动窗格中,然后将该窗格放入 JPanel 中。那么当你放置JPanel时,它在布局方面会更易于管理。
Those classes are common extension points for Java UI designs. First off, realize that they don't necessarily have much to do with each other directly, so trying to find a relationship between them might be counterproductive.
JApplet - A base class that let's you write code that will run within the context of a browser, like for an interactive web page. This is cool and all but it brings limitations which is the price for it playing nice in the real world. Normally JApplet is used when you want to have your own UI in a web page. I've always wondered why people don't take advantage of applets to store state for a session so no database or cookies are needed.
JComponent - A base class for objects which intend to interact with Swing.
JFrame - Used to represent the stuff a window should have. This includes borders (resizeable y/n?), titlebar (App name or other message), controls (minimize/maximize allowed?), and event handlers for various system events like 'window close' (permit app to exit yet?).
JPanel - Generic class used to gather other elements together. This is more important with working with the visual layout or one of the provided layout managers e.g. gridbaglayout, etc. For example, you have a textbox that is bigger then the area you have reserved. Put the textbox in a scrolling pane and put that pane into a JPanel. Then when you place the JPanel, it will be more manageable in terms of layout.
JFrame 和 JApplet 是顶级容器。如果您希望创建桌面应用程序,您将使用 JFrame;如果您计划在浏览器中托管应用程序,您将使用 JApplet。
JComponent 是所有 Swing 组件的抽象类,您可以使用它作为新组件的基类。 JPanel 是一个简单可用的组件,您几乎可以将其用于任何用途。
由于这是一个有趣的项目,因此最简单的方法是使用 JPanel,然后将其托管在 JFrame 或 JApplet 中。 Netbeans 有一个带有简单示例的 Swing 可视化设计器。
JFrame and JApplet are top level containers. If you wish to create a desktop application, you will use JFrame and if you plan to host your application in browser you will use JApplet.
JComponent is an abstract class for all Swing components and you can use it as the base class for your new component. JPanel is a simple usable component you can use for almost anything.
Since this is for a fun project, the simplest way for you is to work with JPanel and then host it inside JFrame or JApplet. Netbeans has a visual designer for Swing with simple examples.
您可能会发现在 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
只是窗口内的一个面板。You might find it useful to lookup the classes on Oracle's website, for example:
https://docs.oracle.com/en/java/javase/15/docs/api/java.desktop/javax/swing/JFrame.html
There you can see that
JFrame
extendsJComponent
andJContainer
.JComponent
is a a basic object that can be drawn.JContainer
extends this so that you can add components to it.JPanel
andJFrame
both extendJComponent
so that you can add things to them.JFrame
provides a window, whereasJPanel
is just a panel that goes inside a window.