对我来说,Javafx1.0发布,很重要的就是UI控件体系结构的调整,可以说javafx从最初发布到现在,这一块变化是最大的。一路跟过来的同志们都可以明显的感觉到,不同的阶段,你能找到的相关文档上的API变化非常大。
最早javafx发布的时候,宣传口号是更好用的swing,当时我就觉得这是搞错了方向了,那个时候的javafx要想在scene上放一个控件,还需要搞在专门的包装器,麻烦的要命。
当时我就想,javafx应该把他的控件体系纳入到Node下面,这是趋势,就像sliverlight终于在2.0版本加入许多控件一样。网上很多大牛的文档都是关于如何使用CustomerNode自己来做控件的,这类文章很多,可见开发人员的需求方向。
javafx1.0,sun终于做出了进步,所有javafx.ext.swing包下面的控件,现在都是Node了,而且默认采用了nimbus风格。为什么就是nimbus?因为nimbus是个基于矢量的ui风格,正好配合javafx。微软为了wpf,是重写了所有控件的,sun想就换个矢量风格就能搞定。这一方面说明了swing的强大,另一方面,我们也能看到,SUN选择了一条和微软不同的道路,尽量复用,而不是推倒重来。不过,nimbus 这个风格,毕竟还是在swing上玩的,有很多特性不支持,比如skin。
我个人还是希望sun能用javafx技术重写所有控件,而不是现在这个半调子的矢量控件nimbus。本来我以为,SUN既然有了 NIMBUS,应该不会重写了,不过呢,我又在javafx.scene.control包下面发现了Skin,TextBox,Control,这个包下面应该是一套用javafx重写的控件体系,还能支持Skin,看来sun还是有这个考虑的,架子已经搭出来了,只是个时间问题。
现在,我们发现,原来sun怎么要要在jse6u10里面加入numbus风格的原因,还是为了javafx铺路。
把控件都归入到Node体系下有什么好处呢,看看Node都有些什么功能就明白了:
javafx的画布scene就是一个Node形成的属性结构
每个Node都有个ID,scene可以通过ID来定位任意的Node
Node包含一个坐标系统
Node支持坐标变化(Translate,rotate,scale等等)
Node支持特效,动画等等
一旦控件纳入到Node体系下,就可以当做一个Node来使用,更好的融入真个Javafx平台下了。
最早javafx发布的时候,宣传口号是更好用的swing,当时我就觉得这是搞错了方向了,那个时候的javafx要想在scene上放一个控件,还需要搞在专门的包装器,麻烦的要命。
当时我就想,javafx应该把他的控件体系纳入到Node下面,这是趋势,就像sliverlight终于在2.0版本加入许多控件一样。网上很多大牛的文档都是关于如何使用CustomerNode自己来做控件的,这类文章很多,可见开发人员的需求方向。
javafx1.0,sun终于做出了进步,所有javafx.ext.swing包下面的控件,现在都是Node了,而且默认采用了nimbus风格。为什么就是nimbus?因为nimbus是个基于矢量的ui风格,正好配合javafx。微软为了wpf,是重写了所有控件的,sun想就换个矢量风格就能搞定。这一方面说明了swing的强大,另一方面,我们也能看到,SUN选择了一条和微软不同的道路,尽量复用,而不是推倒重来。不过,nimbus 这个风格,毕竟还是在swing上玩的,有很多特性不支持,比如skin。
我个人还是希望sun能用javafx技术重写所有控件,而不是现在这个半调子的矢量控件nimbus。本来我以为,SUN既然有了 NIMBUS,应该不会重写了,不过呢,我又在javafx.scene.control包下面发现了Skin,TextBox,Control,这个包下面应该是一套用javafx重写的控件体系,还能支持Skin,看来sun还是有这个考虑的,架子已经搭出来了,只是个时间问题。
现在,我们发现,原来sun怎么要要在jse6u10里面加入numbus风格的原因,还是为了javafx铺路。
把控件都归入到Node体系下有什么好处呢,看看Node都有些什么功能就明白了:
javafx的画布scene就是一个Node形成的属性结构
每个Node都有个ID,scene可以通过ID来定位任意的Node
Node包含一个坐标系统
Node支持坐标变化(Translate,rotate,scale等等)
Node支持特效,动画等等
一旦控件纳入到Node体系下,就可以当做一个Node来使用,更好的融入真个Javafx平台下了。