使用 javafx 构建 reactive 系统-mile米乐体育

javafx 是java中用来构建图形应用程序的新的标准库, 但许多程序员仍然坚持在使用swing甚至awt(额滴个神啊)。关于如何利用javafx工具集中的新的超棒特性来构建响应式的快速应用程序,这里有一些建议!

1. 属性值

如果你对javafx组件做过完整的了解,移动遇到过属性(property)这个东西。fx库中几乎每个值都可以被观察,分区(divider)的宽度,图片的尺寸,文本标识(label)中的文字,一个列表中的子项以及复选框(checkbox)的状态。属性分成另类:可写属性和可读属性。可写值可以被修改,使用设置器方法或者直接修改。 javafx 会处理事件处置过程并确保每个依赖于此属性的组件都会被通知到。可读属性拥有能让你在其值被修改时接收到通知的方法。

示例:

// 可读-且可写 stringproperty name = new simplestringproperty("emil");  // 只读 observablebooleanvalue nameisempty = name.isempty();

2. 绑定值

当你拥有一个可写和可读值的时候,你可以开始就这些值如何关联定义规则。一个可写属性可以被绑定到一个可读属性,如此其值总是会匹配到可读的这个。绑定并不会立即发生,不过它们会在值被观察之前进行(看看我在那里做的就明白了)。 绑定可以是单向或者双向的。当然,如果它们之间是双向的,就需要两个属性都是可写的。

示例:

textfield fielda = new textfield(); textfield fieldb = new textfield(); fielda.prefwidthproperty().bind(fieldb.widthproperty());

3. 可观察的列表

属性并不是唯一可以被观察的东西。如果列表是被封装到了一个 observablelist 中,那么列表的成员同样也是可以被观察到的。observablelist 的响应模型是相当先进的。你不仅能在列表被修改时收到通知,也可以看到列表具体是如何被修改的。

示例:

list otherlist = arrays.aslist("foo", "bar", "bar"); observablelist list = fxcollections.observablelist(otherlist);  list.addlistener((listchangelistener.change 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]

如你所见,设置操作只会触发一次事件。

展开全文
内容来源于互联网和用户投稿,文章中一旦含有米乐app官网登录的联系方式务必识别真假,本站仅做信息展示不承担任何相关责任,如有侵权或涉及法律问题请联系米乐app官网登录删除

最新文章

网站地图