想一下在 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 
左洸 阅读(1655) 
评论(1)  编辑  收藏  所属分类: 
JavaFX 深入浅出