posts - 48,comments - 156,trackbacks - 0

想一下在 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 深入浅出

FeedBack:
# re: JavaFX 深入浅出(六)绑定和触发器
2009-03-12 12:47 | Kurt
那个有点像某国国旗……  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: