java8 javafx_JavaFX技巧8:美丽深层
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:美丽深层相关推荐
- JavaFX技巧8:美丽深层
如果要为JavaFX开发UI框架,请养成一种习惯,始终将自定义控件拆分为控件类和外观类. 来自Swing自己,这对我来说并不明显. Swing还使用MVC概念并将实际的组件呈现委托给UI委托,但是扩展 ...
- javafx_JavaFX技巧4:总结
javafx 在为JavaFX开发自定义控件时,我强烈建议您遵循JavaFX核心控件的脚步,并尽可能使控件的API最终化,并将" final"关键字放在所有方法声明的前面. 例 在 ...
- 再谈Java8 Comparator
文章目录 1. 开始 2. 方法引用:: 3. comparingLong 4. comparing 5. 完整示例代码 1. 开始 之前在Java8 Comparator技巧谈过通过Java8中Co ...
- 解锁新姿势:探讨复杂的 if-else 语句“优雅处理”的思路
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者:hyzhan43 juejin.im/post/5def65 ...
- ESRGAN:基于GAN的增强超分辨率方法(附代码解析)
作者丨左育莘 学校丨西安电子科技大学 研究方向丨计算机视觉 之前看的文章里有提到 GAN 在图像修复时更容易得到符合视觉上效果更好的图像,所以也是看了一些结合 GAN 的图像修复工作. ESRGAN: ...
- 避免过多if - else的新姿势:策略模式、工厂 + 策略
目录 前言 需求 编码实现 思考 策略模式 什么是策略模式? 编码 深思 工厂 + 策略 toMap 效果 后续 前言 避免过多if - else的新姿势:卫语句.小函数.多态.反射 在之前文章说到, ...
- if-else 语句优雅处理
前言 在之前文章说到,简单 if-else,可以使用 卫语句 进行优化.但是在实际开发中,往往不是简单 if-else 结构,我们通常会不经意间写下如下代码: -------------------- ...
- 读书笔记:深度学习进阶-自然语言处理(俗称鱼书二)
文章目录 前言 一.神经网络的复习 二.自然语言和单词的分布式表示 2.1什么是自然语言处理 2.2同义词词典 2.3基于计数的方法 2.3.1基于python的语料库的预处理 2.3.2单词的分布式 ...
- 问题导向VS目标导向:领导者要倾向哪种?
人类进步的驱动: 问题驱动:目标驱动: 两者相互影响: 问题驱动是起点,并且在很多杂乱的问题中只有少数可以转化为目标,从而成为进步的动力:多数问题只是以干扰的形式出现. 问题驱动是被动的,并且常常干扰 ...
最新文章
- 【Windows】清除win10开始菜单中失效打程序标签
- Linux下利用phpize安装php扩展
- Docker系列5--一些问题及解决
- JS 面向对象与原型
- Python-类型注解(3.5引入)
- JVM学习笔记之-运行时数据区概述及线程概述,程序计数器(PC寄存器),虚拟机栈(栈,局部变量表,操作数栈,动态连接,方法调用,方法返回地址等),本地方法接口,本地方法栈
- CMOS图像传感器——图像传感器噪声
- 深入理解InnoDB(4)—索引使用
- 列名 userid 不明确。 表结构_那些你不知道的表结构设计思路
- 字符串拷贝记得strcpy
- MS SQL Server 2000 按日期自动备份
- MySQL默认库可以删_个人总结:Sql(一:创建删除修改库表||附:mysql数据类型及默认值)...
- TLS协议簇加解密流程
- 免费复制百度文库的方法
- 2021年机修钳工(初级)免费试题及机修钳工(初级)模拟考试题
- 阿里巴巴国际站如何避免产品图片判定重复铺货?
- OS知识点汇总(考研用)——第二章:进程管理(下)
- vue 如何下载文件(包含txt jpg pdf word)
- python周环比增长率怎么算_平均增长速度可以根据各个环比增长速度直接求得。()...
- TCP差分数据播发软件、RTK差分数据网络播发软件
热门文章
- P3365,jzoj3894-改造二叉树【LIS,BST】
- The 2020 ICPC Asia Macau Regional Contest J. Jewel Grab(数颜色+链表)
- Codeforces Round #671 (Div. 2)
- Codeforces Gym 101173 CERC 16 D BZOJ 4790 Dancing Disks
- 22、mysql主键自增值和偏移量的查看和修改
- Spring Bean 定义继承
- 解决Html5用canvas绘制不出来图片的问题
- js实现页面跳转重定向的几种方式
- 深入JVM虚拟机(四) Java GC收集器
- C++描述 国王给骑士发放金币 ||