java - 创建 JFrame 的正确方法

标签 java swing jframe

我正在阅读两种创建 JFrame 的方法,但我不清楚哪种方法更好或有何区别:

import java.awt.*;
import javax.swing.*;

public class MyFramePanel {

    public static void main(String[] args) {

        JFrame myFrame = new JFrame("MyFramePanel");
....

我在一些书中找到了这个:

import java.awt.*;
import javax.swing.*;

public class ButtonFrame **extends JFrame**{

    public ButtonFrame() {
        super("Button Frame");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        ...
        setVisible(true);
    }

    public static void main(String[] args) {
        ButtonFrame bf = new ButtonFrame();
    }
}

我将使用第一个 - 我在 Stackoverflow 中找到它 - 但我想知道为什么我正在阅读的大多数有关 Java 的书籍都使用“扩展 JFrame”。

非常感谢您,如果我的问题很愚蠢,很抱歉打扰您。

最佳答案

第一个是不错的选择。想想Composition over Inheritance .

To favor composition over inheritance is a design principle that gives the design higher flexibility, giving business-domain classes and more stable business domain in the long term.

如果您不在 JFrame 中使用 MyFramePanel,而是在 Applet 中使用,则更容易切换且更易于维护从长远来看。

关于java - 创建 JFrame 的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26224397/

相关文章:

java - 我需要同步访问 Java 中的不可变类型吗?

java - 面板为什么不绘制(paint)?

java - 如何为 JTable 中的单元格着色?

java - 如何更改 JFrame 内的 JPanel?

java - 第二个 JFrame 首先关闭

java - Volley 将每个请求存储在应用程序缓存中

graph - 在 Graphstream 中检索鼠标点击

java - SWT 使用 ContentProposalAdapter 显示 HTML

java - 如何使 JLabel 始终位于 JButton 上方?

java - 是否可以在创建 JWindow 后将其父级设置为 JWindow?