java8 javafx

如果您正在开发JavaFX的UI框架,请养成一种习惯,始终将自定义控件拆分为控件类和外观类。 来自Swing自己,这对我来说并不明显。 Swing还使用MVC概念,并将实际的组件呈现委托给UI委托,但是扩展Swing的人们大多将其控件之一子类化,并为子类添加了扩展/修改。 实际上只有很少的框架与UI委托一起工作(例如MacWidgets )。

我有幸能够比较相同的产品/控件的实现(一旦在Swing中完成,又一次在JavaFX中完成),并且我注意到JavaFX的实现更加简洁,主要是因为控件和外观的拆分(下一个行:CSS样式和属性绑定)。 在Swing中,我向框架用户展示了很多东西,这些东西我个人认为是“实现细节”,但后来变成了公共API。 JavaFX体系结构使框架开发人员在公共API和内部API之间划清界限的地方变得更加明显。

控制

控件类存储控件的状态并提供与之交互的方法。 状态信息可以是:控件可视化的数据(例如TableView中的项目),可视属性(显示,隐藏),工厂(例如单元工厂)。 交互可以是:滚动到一个项目,显示给定的时间,执行此操作。 控件类是框架代码和使用框架的应用程序之间的契约。 它应该设计得很好,干净,稳定并且是最终的 。

皮肤

狂野西部是发疯的地方。 外观通过组成现有控件或扩展非常基本的类(例如Node或Region)来创建控件的视觉表示。 皮肤通常放在单独的软件包中,这些软件包的软件包名称表示其中包含的API不被考虑用于公共用途。 如果有人使用它们,则后果自负,因为框架开发人员(您)可能会决定在各个发行版之间进行更改。

翻译自: https://www.javacodegeeks.com/2014/07/javafx-tip-8-beauty-is-skin-deep.html

java8 javafx

java8 javafx_JavaFX技巧8:美丽深层相关推荐

  1. JavaFX技巧8:美丽深层

    如果要为JavaFX开发UI框架,请养成一种习惯,始终将自定义控件拆分为控件类和外观类. 来自Swing自己,这对我来说并不明显. Swing还使用MVC概念并将实际的组件呈现委托给UI委托,但是扩展 ...

  2. javafx_JavaFX技巧4:总结

    javafx 在为JavaFX开发自定义控件时,我强烈建议您遵循JavaFX核心控件的脚步,并尽可能使控件的API最终化,并将" final"关键字放在所有方法声明的前面. 例 在 ...

  3. 再谈Java8 Comparator

    文章目录 1. 开始 2. 方法引用:: 3. comparingLong 4. comparing 5. 完整示例代码 1. 开始 之前在Java8 Comparator技巧谈过通过Java8中Co ...

  4. 解锁新姿势:探讨复杂的 if-else 语句“优雅处理”的思路

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者:hyzhan43 juejin.im/post/5def65 ...

  5. ESRGAN:基于GAN的增强超分辨率方法(附代码解析)

    作者丨左育莘 学校丨西安电子科技大学 研究方向丨计算机视觉 之前看的文章里有提到 GAN 在图像修复时更容易得到符合视觉上效果更好的图像,所以也是看了一些结合 GAN 的图像修复工作. ESRGAN: ...

  6. 避免过多if - else的新姿势:策略模式、工厂 + 策略

    目录 前言 需求 编码实现 思考 策略模式 什么是策略模式? 编码 深思 工厂 + 策略 toMap 效果 后续 前言 避免过多if - else的新姿势:卫语句.小函数.多态.反射 在之前文章说到, ...

  7. if-else 语句优雅处理

    前言 在之前文章说到,简单 if-else,可以使用 卫语句 进行优化.但是在实际开发中,往往不是简单 if-else 结构,我们通常会不经意间写下如下代码: -------------------- ...

  8. 读书笔记:深度学习进阶-自然语言处理(俗称鱼书二)

    文章目录 前言 一.神经网络的复习 二.自然语言和单词的分布式表示 2.1什么是自然语言处理 2.2同义词词典 2.3基于计数的方法 2.3.1基于python的语料库的预处理 2.3.2单词的分布式 ...

  9. 问题导向VS目标导向:领导者要倾向哪种?

    人类进步的驱动: 问题驱动:目标驱动: 两者相互影响: 问题驱动是起点,并且在很多杂乱的问题中只有少数可以转化为目标,从而成为进步的动力:多数问题只是以干扰的形式出现. 问题驱动是被动的,并且常常干扰 ...

最新文章

  1. 【Windows】清除win10开始菜单中失效打程序标签
  2. Linux下利用phpize安装php扩展
  3. Docker系列5--一些问题及解决
  4. JS 面向对象与原型
  5. Python-类型注解(3.5引入)
  6. JVM学习笔记之-运行时数据区概述及线程概述,程序计数器(PC寄存器),虚拟机栈(栈,局部变量表,操作数栈,动态连接,方法调用,方法返回地址等),本地方法接口,本地方法栈
  7. CMOS图像传感器——图像传感器噪声
  8. 深入理解InnoDB(4)—索引使用
  9. 列名 userid 不明确。 表结构_那些你不知道的表结构设计思路
  10. 字符串拷贝记得strcpy
  11. MS SQL Server 2000 按日期自动备份
  12. MySQL默认库可以删_个人总结:Sql(一:创建删除修改库表||附:mysql数据类型及默认值)...
  13. TLS协议簇加解密流程
  14. 免费复制百度文库的方法
  15. 2021年机修钳工(初级)免费试题及机修钳工(初级)模拟考试题
  16. 阿里巴巴国际站如何避免产品图片判定重复铺货?
  17. OS知识点汇总(考研用)——第二章:进程管理(下)
  18. vue 如何下载文件(包含txt jpg pdf word)
  19. python周环比增长率怎么算_平均增长速度可以根据各个环比增长速度直接求得。()...
  20. TCP差分数据播发软件、RTK差分数据网络播发软件

热门文章

  1. P3365,jzoj3894-改造二叉树【LIS,BST】
  2. The 2020 ICPC Asia Macau Regional Contest J. Jewel Grab(数颜色+链表)
  3. Codeforces Round #671 (Div. 2)
  4. Codeforces Gym 101173 CERC 16 D BZOJ 4790 Dancing Disks
  5. 22、mysql主键自增值和偏移量的查看和修改
  6. Spring Bean 定义继承
  7. 解决Html5用canvas绘制不出来图片的问题
  8. js实现页面跳转重定向的几种方式
  9. 深入JVM虚拟机(四) Java GC收集器
  10. C++描述 国王给骑士发放金币 ||