xp系统 javafx_使用JavaFX构建React系统

xp系统 javafx

React JavaFX是用于在Java中构建图形应用程序的新标准库,但是许多程序员仍然对Swing甚至(高音)AWT感到困惑。 在Java诞生20年来,发生了很多事情。 两年前,当我开始研究Speedment UI的JavaFX库时,我发现很多东西都令人着迷! 这里有一些技巧,说明如何使用JavaFX工具包中的许多令人敬畏的新功能来构建ReactSwift的应用程序!

1.财产价值

如果您窥探了JavaFX组件,那么您一定遇到过“属性”一词。 几乎可以观察到FX库中的每个值,分隔符的宽度,图像的大小,标签中的文本,列表的子级以及复选框的状态。 属性分为两类: 可写和可读。 可以使用设置器或直接修改属性来更改可写值。 JavaFX将处理事件处理,并确保将通知依赖于该属性的每个组件。 可读值具有使您可以在值更改时接收通知的方法。

例:

// Read- and writable
StringProperty name = new SimpleStringProperty("Emil"); 
// Only readable
ObservableBooleanValue nameIsEmpty = name.isEmpty();

2.绑定值

当具有可写和可读的值时,可以开始定义这些值如何关联的规则。 可写属性可以绑定到可读属性,以便其值将始终与可读属性匹配。 绑定不是立即的,但是在观察值之前,它们将被解析(请参阅我在那里所做的)。 绑定可以是单向或双向的。 当然,如果它们是双向的,则两个属性都必须是可写的。

例:

TextField fieldA = new TextField();
TextField fieldB = new TextField();
fieldA.prefWidthProperty().bind(fieldB.widthProperty());

3.可观察的清单

属性不是唯一可以观察到的东西。 如果列表包含在ObservableList中,则也可以观察列表的成员。 ObservableList的React模型非常先进。 修改列表后,您不仅会收到通知,还可以确切地看到列表的更改方式。

例:

List<String> otherList = Arrays.asList("foo", "bar", "bar");
ObservableList<String> list = FXCollections.observableList(otherList);list.addListener((ListChangeListener.Change<? extends String> change) -> {System.out.println("Received event.");while (change.next()) {if (change.wasAdded()) {System.out.println("Items " + change.getAddedSubList() + " was added.");}if (change.wasRemoved()) {System.out.println("Items " + change.getRemoved() + " was removed.");}}
});System.out.println("Old list: " + list);
list.set(1, "foo");
System.out.println("New list: " + list);

上面的输出是:

Old list: [foo, bar, bar]
Received event.
Items [foo] was added.
Items [bar] was removed.
New list: [foo, foo, bar]

如您所见,设置操作仅创建一个事件。

4. StringConverter

有时,您会发现需要创建绑定时组件中没有确切的值。 一个典型的例子是您拥有一个StringProperty ,该属性具有从TextField获得的路径。 如果您希望此值表示为Path的可观察属性,则需要为此创建一个StringConverter。

例:

TextField fileLocation = new TextField();
StringProperty location = fileLocation.textProperty();
Property<Path> path = new SimpleObjectProperty<>();Bindings.bindBidirectional(location, path, new StringConverter<Path>() {@Overridepublic String toString(Path path) {return path.toString();}@Overridepublic Path fromString(String string) {return Paths.get(string);}
});

对象属性未双向绑定到文本字段值。

5.表达

使用前面显示的Bindings-class可以创建各种表达式。 假设您有两个文本字段供用户输入信息。 现在,您需要定义一个只读字段,该字段始终包含一个字符串,如果两个字符串的长度相等,则表示两个字符之间的字符混合。 如果长度不相等,则应显示一条帮助消息。

例:

TextField first  = new TextField();
TextField second = new TextField();
TextField mix    = new TextField();mix.textProperty().bind(Bindings.when(first.lengthProperty().isEqualTo(second.lengthProperty())).then(Bindings.createStringBinding(() -> {int length        = first.lengthProperty().get();String firstText  = first.textProperty().get();String secondText = second.textProperty().get();char[] result     = new char[length * 2];for (int i = 0; i < length; i++) {result[i * 2]     = firstText.charAt(i);result[i * 2 + 1] = secondText.charAt(i);}return new String(result);}, first.textProperty(),second.textProperty())).otherwise("Please enter two strings of exactly the same length.")
);

结论

这些只是JavaFX众多功能中的少数。 希望您能找到更多利用事件系统的创新方法!

翻译自: https://www.javacodegeeks.com/2016/02/building-reactive-systems-javafx.html

xp系统 javafx

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

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

相关文章

html手机端图片点击放大缩小快捷键,PS放大缩小图片的快捷键是什么?PS放大缩小图片的操作技巧...

PS放大缩小图片的快捷键是什么&#xff1f;PS怎么放大缩小图片&#xff1f;使用PS处理图片可是个精细的活儿&#xff0c;为了让图片处理得更加完美&#xff0c;我们经常需要将图片放大来处理&#xff0c;修改好之后又要缩小图片看下整体效果&#xff0c;这样来回切换其实挺麻烦…

webstorm html代码提示设置,Webstorm设置代码提示

下载路径&#xff1a; https://github.com/virtoolswebplayer/ReactNative-LiveTemplate本插件可以配合Webstorm设置代码提示。Mac下安装Webstorm2016.1为例安装路径在终端&#xff1a;$ cd ~/Library/Preferences/$ ls找到Webstorm版本$ open WebStorm2016.1先将ReactNative.x…

滑动拼图验证码操作步骤:_拼图项目:一个不完整的难题

滑动拼图验证码操作步骤&#xff1a;马克雷因霍尔德&#xff08;Mark Reinhold&#xff09;最近提议延迟Java 9&#xff0c;以花更多的时间完成项目Jigsaw&#xff0c;这是即将发布的版本的主要功能。 虽然这个决定肯定会使Java的厄运论者重回舞台&#xff0c;但我个人感到很轻…

document中输出html字符串流,HTML DOMDocument从段落后面的标签中获取字符串

我想解析html文档。我需要h2之后所有p的内容。要解析的html :(示例)Lorem ipsumLorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridic…

arcgis adf数据_使用ADF列表视图的主从数据

arcgis adf数据从UI角度来看&#xff0c;最近ADF Faces 表组件不再被认为很酷。 对于显示数据集合&#xff0c; 列表视图今天应该很酷。 这并不意味着我们根本不应该使用af&#xff1a;table 。 在某些情况下&#xff08;经常是:)&#xff09;&#xff0c;表比列表视图更适合。…

jmeter添加html,Jmeter 报告可视化 —— 配置生成测试报告仪表板,Jmeter + Jenkins 自动化构建生成 HTML 报告...

目录一、jmeter报告仪表板相关信息二、文件修改说明三、jmeter.properties文件配置四、user.properties文件配置五、新建jtl报告目录六、复制jmeter.properties文件并重命名七、写批处理bat文件八、准备jmeter测试计划脚本九、本地调试bat文件十、Jenkins自动化构建一、jmeter报…

gradle java_Java EE,Gradle和集成测试

gradle java在过去的几年中&#xff0c;Apache Maven已成为Java和Java EE项目的事实上的构建工具。 但是从两年前开始&#xff0c; Gradle便获得了越来越多的用户。 在我之前的文章&#xff08; http://www.lordofthejars.com/2015/10/gradle-and-java-ee.html &#xff09;之后…

javafx 内存占用_JavaFX:TouchGesture内存泄漏?

javafx 内存占用在我的一个项目中&#xff0c;最近几天我在与内存泄漏作斗争&#xff08;是……“耦合”&#xff09;&#xff0c;我得出的结论是可能存在与触摸/滚动手势有关的问题。 在下面的示例中&#xff0c;我有两个按钮。 第一个创建具有一千行的列表视图&#xff0c;第…

手机单选按钮 html5,@html剃刀单选按钮mvc5(@html razor radio buttons mvc5)

这里是我的视图模型public class UserResponseModel{public string QuestionId { get; set;}public string QuestionText { get; set; }public bool IsChecked { get; set; }}所以&#xff0c;对于这个复选框精美作品for (var i 0; i < Model.UserResponses.Count; i){Html…

cucumber jvm_用Cucumber JVM编写BDD测试

cucumber jvmCucumber JVM是编写BDD测试的出色工具。在本文中&#xff0c;我想对Cucumber JVM的BDD进行介绍。 让我们开始吧… 什么是BDD&#xff1f; 简而言之&#xff0c;BDD试图解决“通过示例理解需求”的问题 BDD工具 有许多可用于BDD的工具&#xff0c;有趣的是&#…

计算机网络英文介绍,计算机网络英文自我介绍

计算机网络英文自我介绍It’s my pleasure to introduce myself to you here. My name is XX, Icome from XX which is a beautiful city. And I am a candidate forthe position of Sales Representative. 公务员面试自我介绍I attended Nantong University in 2003. My major…

模拟模型学习 几何布朗运动_Java的几何布朗运动

模拟模型学习 几何布朗运动维纳过程是一个连续时间的随机过程&#xff0c;以纪念诺伯特维纳。 通常用于用随机成分表示噪音或财务状况。 可以计算几何布朗运动以可视化某些界限&#xff08;以分位数表示&#xff09;以暗示绝对范围。 为了进行计算&#xff0c;需要以下参数&am…

计算机网络基础 第4章 龚娟,计算机网络基础 人民邮电 龚娟 第4章习题答案

1&#xff0e;关于IPv4地址的说法&#xff0c;错误的是( C )。A&#xff0e;IP地址是由网络地址和主机地址两部分组成 B&#xff0e;网络中的每台主机分配了唯一的IP地址 C&#xff0e;IP地址只有三类&#xff1a;A&#xff0c;B&#xff0c;CD&#xff0e;随着网络主机的增多&…

动态调整线程池_调整线程池的重要性

动态调整线程池无论您是否知道&#xff0c;您的Java Web应用程序很可能都使用线程池来处理传入的请求。 这是许多人忽略的实现细节&#xff0c;但是迟早您需要了解如何使用该池以及如何为您的应用程序正确调整池。 本文旨在说明线程模型&#xff0c;线程池是什么以及正确配置线…

java系统架构师有的特质_Java中特质模式的定义

java系统架构师有的特质在本文中&#xff0c;我将介绍特征的概念&#xff0c;并为您提供一个具体示例&#xff0c;说明如何在Java中使用它们以减少对象设计中的冗余。 我将首先提出一个虚构的案例&#xff0c;其中可以使用特征来减少重复&#xff0c;然后以使用Java 8的特征模式…

html快速排序,快速排序.html

Titlevar arr2 [13, 4, 35, 67, 86, 24, 86, 34, 76];function quickSort(arr) {//如果数组<1,则直接返回if (arr.length < 1) {return arr;}var pivotIndex arr[arr.length - 1];//找基准&#xff0c;并把基准从原数组删除// var pivotarr.splice(pivotIndex,1)[0];//…

tdd java_Java TDD简介–第2部分

tdd java再次问好&#xff01; 在上一篇博客文章中&#xff0c;我在没有紧密引用Java的情况下总体上解释了TDD理论 &#xff0c;但是在这一部分中&#xff0c;我们开始进行TDD实践。 我们的目标是遍历TDD的所有阶段&#xff1a;从需求分析到测试代码的重构。 我们将在具有Java&…

计算机怎么没有桌面文件夹名称大全,你的电脑文件总是找不到?是时候学习文件夹分类整理了...

我们常常说做好办公整理&#xff0c;我们工作起来才更有效率&#xff1b;此处的办公整理不单单是对办公桌整理整齐&#xff0c;电脑里面的文件也需要定期整理&#xff0c;你有没有发现常常找一个文件的时候却总是找不到&#xff1f;那么此时就应该学习文件夹分类整理了&#xf…

selenide_使用Selenide进行有效的UI测试

selenide等待奇迹 圣诞节是奇迹的时刻。 在新的一年的前夕&#xff0c;我们都会制定下一个计划。 我们希望所有问题都将在最后一年消失&#xff0c;在来年出现奇迹。 每个Java开发人员都梦想着奇迹&#xff0c;使他成为世界上最有效的Java开发人员。 我想向你展示这样的奇迹…

计算机无法维修技术鉴定,计算机维修工技能鉴定(初级)剖析..pdf

计算机(微机)维修工初级理论知识复习题一、单项选择1、液晶显示器画面出现闪动的现象&#xff0c;原因可能是 ( C )。A 、数据线与显卡接口接触不良 B、操作系统有问题C 、显示器与主板不兼容 D、以上都不正确2、职业道德内涵是从事一定职业的人们在职业活动中应该遵循的&#…