厦门工程建设招聘信息网站,做网站的旅行社,海外推广是做什么的,wordpress导入图片不显示xp系统 javafxJavaFX是用于在Java中构建图形应用程序的新标准库#xff0c;但是许多程序员仍然对Swing甚至#xff08;高音#xff09;AWT感到困惑。 在Java诞生20年来#xff0c;发生了很多事情。 两年前#xff0c;当我开始研究Speedment UI的JavaFX库时#xff0c;我发… xp系统 javafx 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模型非常先进。 修改列表后您不仅会收到通知还可以确切地看到列表的更改方式。 例 ListString otherList Arrays.asList(foo, bar, bar);
ObservableListString 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();
PropertyPath path new SimpleObjectProperty();Bindings.bindBidirectional(location, path, new StringConverterPath() {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.htmlxp系统 javafx