加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 我应该是否继承JFrame / JPanel?

发布时间:2020-12-15 02:50:26 所属栏目:Java 来源:网络整理
导读:我习惯于在其他编程环境中对窗口类进行子类化,但在 java教程中我经常会看到类似的东西 JPanel p = new JPanel();p.setLayout(new BoxLayout(p,BoxLayout.PAGE_AXIS));p.add(aComponent);p.add(anotherComponent); 那么Java中有关子类化顶级容器类的约定是什
我习惯于在其他编程环境中对窗口类进行子类化,但在 java教程中我经常会看到类似的东西
JPanel p = new JPanel();
p.setLayout(new BoxLayout(p,BoxLayout.PAGE_AXIS));

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

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

解决方法

使用与所有java类相同的原则.如果要修改或扩展行为或功能,则无论如何都要扩展JPanel或JFrame.诀窍是仔细思考并确定你是否真的在添加任何东西.在大多数情况下,当我看到人们扩展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的类.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读