泻药*2
最近问javafx的问题又多了起来,看来越来越多人学习java的时候,开始接触到了javafx这个gui工具,前几天刚跟一个学生聊完,说本来没有人选javafx的,都是swing,我说,那swing写出来的能看?他说,不不不,本来没有人选,但是他选了之后,其他人就有了压力,然后一堆人就都用了javafx,哦,peer pressure
扯远了
说回scene,先看张图
其实scene是stage的一部分,但是因为javafx的设计的窗口部分,复用了操作系统自身的窗口的api
所以你在不同的操作系统下,看到的窗口样式是不一样的,stage主要就是用来封装这一层
stage主要有最大化,最小化,关闭这些按钮,就是最外层那些东西
然后scene就是内容的基础类,所有的node都要装到scene里面去
所以scene就是一个分界线,跟os相关的,放在stage里面
跟用户内容相关的,都在scene里面
javafx提供一个scene给你,然后你把你的gui内容放到scene里面去就行了
你的第二个问题,在stage和layout中间添加的这一层scene究竟有什么好处呢?
这个问题其实是有问题的,应该是在stage和root node之间放入一个scene,不是layout
因为root可能并不是layout哦,你可以把button,image view等做成root,只要是node都可以放入作为root node放入scene
而且layout也有很多种,比如stackpane,vbox,hbox,gridpane,pane,group等等,如下图
所以这个时候,保留一个最底层的container,也就是scene,就很有必要了