您的方法总体上听起来不错-只要可行,就可以实现主要目标!因此,我在这里的评论更多是关于微调/更广泛的设计方面.

只要在程序执行期间GUI随后不会发生变化,在构造函数中进行GUI构造就从根本上没有错.这里的理由是,应将构造函数保留给“一次性”构造活动.因此,对于具有预先确定的布局的对话框之类的对话框可能很好.

如果您有一个更加动态的GUI,在整个程序执行过程中经常添加和删除组件,那么我强烈建议将其移至构造函数外部的一组方法,以便可以独立于对象构造来调用它们.如果需要进行初始设置,构造函数本身仍可以调用这些方法,但是随后您可以稍后调用这些方法以添加新组件,刷新布局等.

好消息是,如果您弄错了,这些东西就不难重构-如果需要的话,将安装程序代码从构造函数中拉出到单独的方法中通常很简单.

要注意的另一件事是经常重复的口头禅“宁愿作文优先于继承”.就是说,如果您可以通过组装现有组件而不是继承和覆盖您的设计来使GUI工作,从长远来看可能会更好/更容易维护.例如,我认为我从来没有继承过JFrame的子类-只是在其中添加包含所有特定于应用程序的组件的JPanels几乎总是更干净.

最后,请谨慎将GUI组件与应用程序逻辑紧密耦合.实际上,Swing可以很好地使您从展示代码中分离出数据模型(例如,使用ListModel and friends).值得研究和理解这种方法.关键是,您通常应该以与应用程序无关的方式来构建GUI组件,但应通过将它们连接到正确的数据模型和事件处理程序等来为它们提供应用程序特定的行为.

java gui构建机制_java-从构造函数构建GUI. [设计决策]相关推荐

  1. java方法调用机制_Java方法调用机制 - osc_bkdv2it5的个人空间 - OSCHINA - 中文开源技术交流社区...

    最近在编程时,修改方法传入对象的对象引用,并没有将修改反映到调用方法中.奇怪为什么结果没有变化,原因是遗忘了Java对象引用和内存分配机制.本文介绍3个点: ① 该问题举例说明 ② 简要阐述Java内 ...

  2. java程序并行机制_Java语言具有多种优点和特点,下列选项中,______反映了Java程序并行执行机制的特点。A.多线程B.健...

    Java语言具有多种优点和特点,下列选项中,______反映了Java程序并行执行机制的特点.A.多线程B.健 更多相关问题 根据句意及首字母完成单词1. -What c__________ is i ...

  3. java的响应机制_JAVA事件响应机制

    JAVA事件响应机制 1,先自定义一个事件 public class MyEvent extends java.util.EventObject{ public MyEvent(Object sour ...

  4. java tcp 心跳机制_Java实现心跳机制的方法

    一.心跳机制简介 在分布式系统中,分布在不同主机上的节点需要检测其他节点的状态,如服务器节点需要检测从节点是否失效.为了检测对方节点的有效性,每隔固定时间就发送一个固定信息给对方,对方回复一个固定信息 ...

  5. java的多线程机制_Java多线程开发(一)| 基本的线程机制

    0. 前言 Java 为了实现跨平台,在语言层面上实现了多线程.我们只需要熟悉 Java 这一套多线程机制就行了,比 C/C++ 要容易多了. 1. 定义任务 我们编写程序,最终是为了完成特定的任务. ...

  6. 说一下java的运行机制_Java运行机制是什么?

    不管是学习Java还是其他什么变成语言,我们不仅要了解它的特性,充分的使用Java语言完成各种程序开发工作,还要了解Java的运行机制.只有了解其底层的运行机制,才能更好的利用Java完成各项工作.J ...

  7. Java运行作业控制语言_Java安全——语言本身的设计

    Java安全--语言本身的设计 Java 安全 内在安全机制 Java语言本身的安全机制是要保护内存资源--保证内存完整性,核心的安全特性要确保程序不能非法解析或修改驻留在内存中的机密信息.从语言本身 ...

  8. java窗口程序实例_Java Swing快速构建窗体应用程序

    以前接触java感觉其在桌面开发上,总是不太方便,没有一个好的拖拽界面布局工具,可以快速构建窗体. 最近学习了一下NetBeans IDE 8.1,感觉其窗体设计工具还是很不错的 , 就尝试一下做了一 ...

  9. java的reflection机制_Java的Reflection机制

    什么时候使用Reflection: 在java语言中,创建一个类的对象通常使用new operator,但是如果预先不知道类名,类名是在程序运行过程中通过参数传递过来,就没法使用这种方法了,这种情况下 ...

  10. java swing事件机制_java SWing事件调用的两种机制

    /** * java swing中事件调用的两种机制: * (一)响应机制 * (二)回调机制 */ package test; import java.awt.*; import java.awt. ...

最新文章

  1. mysql数据库21_Mysql5.7.21安装文档
  2. 《强化学习周刊》第18期:ICML-2021强化学习的最新研究与应用
  3. 文档标题:WinNTWin2K下实现进程的完全隐藏
  4. 是什么让深度学习再次崛起并超越人类?
  5. SAP Control Framework 丢失事件?
  6. rocketmq订阅多个主题_RocketMQ 的消息模型
  7. java线程死锁_Java并发:隐藏线程死锁
  8. 大厂程序员年薪_年薪25万一线大厂程序员,年薪10万三线城市大专讲师,怎么选...
  9. lock.lock()使用,与synchronized对比
  10. 热烈庆祝《大数据》成功入选中国科技核心期刊目录~
  11. VM的安装使用教程(校园内自用)
  12. 用最简单的方式理解和使用ActivityMQ(基础入门)
  13. 尔雅网络选课 大学计算机知识,2017-2018学年第1学期超星尔雅网络课程选课指南.PDF...
  14. C#编写的通过汉字得到拼音和五笔码
  15. 四个技巧教你解决电磁干扰问题
  16. android 新浪微博第三方登录,Android的集成新浪微博第三方登录
  17. python爬虫爬取下厨房食谱,周末聚餐真的停不下来
  18. 计算机毕业设计之java+javaweb的电动车实名制挂牌管理系统
  19. Mtk WIFI常用调试命令
  20. 如何让Div层悬浮在Flash Object对象之上!

热门文章

  1. jQuery Mobile中网格grid样式ui-grid-*
  2. Python pandas使用
  3. Digilent提供的Pmod AD1驱动程序
  4. 论计算机网络的发展及运用,试论计算机网络发展及其应用研究
  5. 生成XML文件的步骤 解析XML文件
  6. 《IT经理世界》:中国软件业开始起飞
  7. [转载] Python: fnmatch模块 (Unix B-Shell通配符的文件名匹配)
  8. Educational Codeforces Round 10 B. z-sort
  9. 数据结构实验之查找一:二叉排序树 (SDUT 3373)
  10. Go 用JSON加载表格数据