javafx html5_JavaFX技巧5:可观察

javafx html5

即使在整个NSA监视的这段时间,实现JavaFX控件时也要牢记可观察性,这仍然是一个好主意。 与Swing相比,这在JavaFX中很容易实现。

旧时光

来自Swing,我习惯于花费大量精力和时间来使自定义控件变得可观察。 通常需要添加方法来添加和删除某种类型的侦听器。 此侦听器类型是一个新接口,该接口的单个​​方法接受了一个新的事件对象。 要发送此事件对象,控件必须在我的自定义控件中“触发”它,因此我最终编写了fireXYZ()方法。 要做很多工作只是为了让人们知道控件状态的某些方面已经改变。

新时代

在JavaFX中,通过使用属性和可观察的集合可以更轻松地实现可观察性。 在FlexGanttFX框架中,其控件的几乎每个属性都是属性,并且所有集合都是通过FXCollections类创建的,该类返回可观察的集合。 这很有意义,因为每个控件的属性总数定义了它的状态,并且此状态需要是可观察的,以便应用程序的其他部分(尤其是其他控件)可以对状态更改做出React。

样板代码

使用属性的不利之处在于,您最终编写了许多样板代码,但仍然比Swing少。 对于布尔型属性,它将看起来像这样:

public final BooleanProperty showStuff =new SimpleBooleanProperty(this, "showStuff", true);public final BooleanProperty showStuffProperty() {return showStuff;
}public final boolean isShowStuff() {return showStuff.get();
}public final void setShowStuff(boolean show) {showStuff.set(show);
}

是的,您应该完全遵循此编码约定。 对于名为xxx的属性,请提供名为xxxProperty()的属性访问器方法,名为setXXX()的设置程序和名为getXXX()的获取程序。 这是在JavaFX中使用它的方式,您应该坚持使用它。

使用集合时,通常至少会得到以下代码:

private final ObservableList<String> names =FXCollections.observableArrayList();public final ObservableList<String> getNames() {return names;
}

在JavaFX核心控件中,集合通常存储在一个属性中,以便可以用新集合替换整个集合。 到目前为止,我尚未在控件中真正看到对此的强烈要求,并且不这样做就意味着我不必为此情况编写属性侦听器。

听众

现在,我们的控件属性是属性,我们可以通过向它们添加侦听器(使用lambda表达式)来轻松地对状态更改做出React。

myControl.showStuffProperty().addListener(it -> showStuffChanged());myControl.getNames().addListener((Observable observable) -> namesChanged());

结论

在设计自己的自定义控件时,通过属性和可观察的集合在控件类中公开其状态。 这样,每个人都将能够以与整个JavaFX框架一致的方式观察控件的状态,并使其他开发人员能够无缝地将其控件/应用程序与您的控件集成在一起。

翻译自: https://www.javacodegeeks.com/2014/07/javafx-tip-5-be-observable.html

javafx html5

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/340865.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

苹果电脑怎么投屏到电视_tcl电视怎么投屏

除了看电视&#xff0c;现在的智能电视产品还支持手机投屏功能&#xff0c;如果在使用TCL电视&#xff0c;可以借助第三方软件实现手机投屏的功能&#xff0c;下面就为大家介绍一下&#xff0c;tcl电视怎么投屏。tcl电视怎么投屏步骤1、打开电视自带的应用商店。步骤2、搜索LBT…

重复码

介绍 在我们的Java应用程序中复制/粘贴代码通常不好&#xff0c;但是有时这是不可避免的。 例如&#xff0c;项目License3j在Feature类中为其支持的每种XXX类型提供了一个isXXX方法。 在这种情况下&#xff0c;我们要做的就是写 public boolean isBinary() { return type Type…

sap tcode 功能对照表_Python for Ev3练习amp;Minstorms对照表02

大家好。我是欧文今天给大家分享python for Ev3的练习代码以及python中对应的Ev3Minstorms软件模块对照表。这个练习题都相对基础。主要是用来练习用的。给大家分享的代码也是比较简单的&#xff0c;不过实现方法都是不唯一的。主要的目的是练习和学习。练习代码如下&#xff1…

大楼通信综合布线系统_某办公大楼综合布线系统设计实例,小白可以借鉴一下,大神请绕路...

xxx办公大楼综合布线系统是一个包括内部数据语音通信、外线电话线路接入管理系统、办公用强电电气配电系统、电缆电视系统等内部的复合布线系统&#xff0c;在会议室还有一个小型的供音响系统设备使用的专用布线系统。各子系统的基本情况及主功能如下&#xff1a;强电配电系统&…

java8日期_Java8日期与时间

我们知道Java8一个比较大的改动就是引入了新的表示日期和时间的API&#xff0c;还是很有必要抽点时间了解一下基本的用法。Java8之前的问题在讨论Java8的API之前&#xff0c;我们先看看原来API的问题。我们知道Java8之前只有java.util.Date和java.util.Calendar来表示和处理时间…

javaone_为JavaOne 2014做好准备!

javaone保持那个想法&#xff01; 是的&#xff0c;我希望我能在Java One 2014上做演讲-但我现在只值得在梦里做到这一点&#xff01; 但是&#xff0c;没有什么阻止我遵循Java One并跟踪有关我最喜欢的主题的会话/对话。 我希望Oracle能够像我们2013年版那样&#xff0c;像我…

代码逻辑分析_双11模块79.34%的前端代码是怎样智能生成的?

作者&#xff5c;妙净、波本最近几年&#xff0c;AI 渗透到开发领域的方方面面。在前端领域&#xff0c;设计稿生成代码(简称 D2C)就是一个例子。其目标在于通过 AI 助力前端提效升级&#xff0c;杜绝简单重复性的工作内容。今年“双十一”&#xff0c;阿里的 D2C 覆盖了天猫淘…

datax导入MySQL报错_导入MySQL方法对比

使用datax导入1、使用自增id记录数耗时(秒)TPS42488823471224433404813403882722、不使用自增id&#xff0c;使用雪花算法生成id后导入记录数耗时(秒)TPS424888268062483340481365555096使用MySQL命令load导入1、csv带雪花id> select * from l_wish_log_snow_copy into outf…

项目织机

为什么为什么&#xff1f; Java 8流背后的驱动程序之一是并发编程。 在流管道中&#xff0c;指定要完成的工作&#xff0c;然后任务将自动分发到可用处理器上&#xff1a; var result myData.parallelStream().map(someBusyOperation).reduce(someAssociativeBinOp).orElse(…

java mybatis 教程_(整理)MyBatis入门教程(一)

本文转载&#xff1a;本人文笔不行&#xff0c;根据上面博客内容引导&#xff0c;自己整理了一些东西首先给大家推荐几个网页&#xff1a;MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code&#xff0c;并且改名为MyBa…

2020版北大中文核心期刊目录_收藏备用最新版:《中文核心期刊要目总览》北大中文核心期刊目录...

《中文核心期刊要目总览》是学术界对某类期刊的定义&#xff0c;一种期刊等级的划分。它的对象是&#xff0c;中文学术期刊&#xff0c;是根据期刊影响因子等诸多因素所划分的期刊。中文核心期刊是北京大学图书馆联合众多学术界权威专家鉴定&#xff0c;目前受到了学术界的广泛…

java中多个输入框搜索_如何在一个搜索框中输入多个字段的值进行查询?

搜索export default {data() {return {input: ,//用来接受input框的值name:,// 用来存储foreach的对应的值id:,// 用来存储foreach的对应的值dq:// 用来存储foreach的对应的值}},methods:{submit(){console.log(this.input);// 打印let str this.input;// 声明变量接受input的…

fedora如何隐藏顶部状态栏_藏在 iOS 13 里的 9 个隐藏小技巧

正文共&#xff1a;1797字 10图1.从控制中心直接选择无线网络和蓝牙配件苹果首次在 iOS 7 中加入了控制中心&#xff0c;允许用户进行一些快速操作&#xff0c;例如打开/关闭飞行模式、打开/关闭蜂窝网络、打开/关闭 Wi-Fi 等。但很多控制都只停留在一级菜单&#xff0c;你只能…

摇篮配置

在这篇文章中&#xff0c;我们将介绍有关Gradle配置的综合文章。 1.技术 Gradle是用于自动任务管理的开源构建工具。 它基于Apache Ant&#xff0c;Apache Maven的概念。 Gradle是使用Groovy语言开发的。 Gradle是使用基于Groovy的领域特定语言&#xff08;DSL&#xff09;开发…

java的封装性的优点_18、Java的三大特性之封装

Java的三大特性java是一个面向对象的语言&#xff0c;所以java也有面向对象语言的三大特性&#xff1a;继承&#xff0c;封装&#xff0c;多态&#xff0c;任何一个java项目&#xff0c;都会用到这三种特性&#xff0c;所以掌握好这三大特性非常的重要。封装我们为什么要使用封…

groovy 字符串截取最后一个_Java基础篇——字符串详解

字符串的声明字符串是内存中连续排列的0个或多个字符。不变字符串是指字符串一旦创建&#xff0c;其内容就不能改变&#xff0c;Java中使用String类来处理不变字符串&#xff0c;在对String类的实例进行查找、比较、拼接等操作时&#xff0c;既不能输入新字符&#xff0c;又不能…

eclipse插件开发_开发Eclipse插件

eclipse插件开发最近&#xff0c;我开始与一个团队合作开发Eclipse插件。 团队开发了一个很棒的插件&#xff0c;可以实现预期的目的。 因此&#xff0c;我检查了源并尝试构建它。 项目源包含所有必需的库&#xff0c;并且只能在Eclipse中构建。 在当今不断交付的世界中&#x…

java中链式调用_Java及Android中常用链式调用写法简单示例

本文实例讲述了Java及Android中常用链式调用写法。分享给大家供大家参考&#xff0c;具体如下&#xff1a;最近发现&#xff0c;目前大火的许多开源框架中&#xff0c;大多都使用了一种"(方法).(方法).(方法)"的形式进行调用&#xff0c;最典型的就是RxJava。android…

Java记录

https://openjdk.java.net/jeps/359概述了新的Java功能&#xff0c;该功能可能会/将在某些将来的Java版本中实现。 JEP建议使用一种新型的“班级”&#xff1a;记录。 JEP中的示例内容如下&#xff1a; record Range( int lo, int hi) { public Range { if (lo > hi) /* ref…

C什么k什么_K线图基础知识丨什么是K线散兵坑形态?K线散兵坑形态的操作与案例详解...

本文总共999字&#xff0c;预计阅读需要3分钟今天我们给大家带来的是K线散兵坑形态&#xff0c;那么K线散兵坑形态应该怎么来操作呢&#xff1f;今天我们就结合相应的实战案例来为大家讲解一下吧。K线散兵坑形态的简介散兵坑是指在股价缓慢上涨过程中.成交量也逐渐放大&#xf…