gpt4 book ai didi

java - 我是否应该子类化 JFrame/JPanel?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:51:41 25 4
gpt4 key购买 nike

我习惯于在其他编程环境中对窗口类进行子类化,但在 java 教程中我通常会看到类似的东西

JPanel p = new JPanel();
p.setLayout(new BoxLayout(p, BoxLayout.PAGE_AXIS));

p.add(aComponent);
p.add(anotherComponent);

那么 Java 中关于子类化顶级容器类的约定是什么?

最佳答案

使用与所有 Java 类相同的原则。如果您正在修改或扩展行为或功能,那么一定要扩展 JPanelJFrame。诀窍是仔细考虑并决定你是否真的要添加任何东西。在 大多数 情况下,当我看到人们扩展 JFrame 时,这是不必要和错误的;

public class MyFrame extends JFrame {
public static void main(String[] args) {
new MyFrame().setVisible(true);
}
}

为什么要扩展 JFrame?你还没有添加任何东西!组合是一个更好的选择。

扩展 JPanel 有点不同。 JPanel 是一个相当抽象的概念,它只是其他组件的通用容器。恕我直言,将 JPanel 子类化以创建更具体的面板,然后在您的应用程序中使用它是有效的。它促进了 OOP 和封装。

例如,假设您的 GUI 有 2 个主要显示区域;一个带有一些按钮/控件/输入,另一个显示输出(例如在文本区域中)。将 JPanel 子类化以创建包含按钮/控件/输入的 ControlPanel 是完全可以接受的。这会将所有代码移动到一个简洁的模块中,清理包含并处理主要 JFrame 的类。

关于java - 我是否应该子类化 JFrame/JPanel?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5895282/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com