想一下在 Java 中,我们如何用观察者模式来让视图反映模型的变化的?观察者,被观察者,注册监听器,事件,回调,获取数据,等等是不是很麻烦?
有了绑定,我们可以直接将观察者的某个属性和被观察者的某个属性绑到一块,同步变化,省了中间很多步骤,下面的例子,我将一个圆的透明度和一个文本的值与一个滑块的值绑定到一块。看看在浏览器里运行时什么效果(注意:需要 Java 插件,否则看不到效果)(下载到本机):
//一个滑块
var slider = SwingSlider {
minimum: 0
maximum: 100
value: 80
vertical: false
};
//主窗体
Stage {
title: "MyApp"
scene: Scene {
width: 200
height: 200
content: [
VBox{
spacing: 10
content: [
//加入滑块
slider,
//加入一个圆
Circle {
centerX: 100
centerY: 50
radius: 40
fill: Color.RED
//将透明度和滑块的值绑定
opacity: bind {
slider.value / 100.0
}
},
//加入一个文本
Text {
font: Font {
size: 24
}
x: 10,
y: 30
// 将文本内容和滑块的值绑定
content: bind "{slider.value}"
}
]
}
]
}
};
bind 不但可以绑定到变量,还可以绑定到表达式,函数等等,还可以双向绑定。
至于触发器,个人感觉类似于一个 Setter ,在你给一个变量赋值的时候,同时做一些额外的事情,因为你用一个字面量的方式创建一个对象的时候,不可能去调用任何函数,设置这个语言特性可能更多的是考虑这一点吧。
了解更多:
边蓬的 JFX 入门
官方教程
官方 GUI 教程
语言参考
posted on 2009-03-11 23:24
左洸 阅读(1637)
评论(1) 编辑 收藏 所属分类:
JavaFX 深入浅出