java反射运用在javaFX客户端中

javaFX应用开发时 必然会涉及到part页面的读取 一个part相当于一个HTML的页面,相对于Swing SWT javaFX开发的CS端的程序不需要使用代码去写页面,而是可以通过工具SceneBuilder拖拽生成类似HTML代码的FXML,怎么样把这个FXML加载到你的客户端中呢?


        首先javaFX提供FXMLLoader对象

protected Parent loadFXML() throws IOException {
FXMLLoader loader = new FXMLLoader();
loader.setClassLoader(getClass().getClassLoader());
loader.setLocation(getClass().getResource(path));
loader.setController(this);
content = loader.load();
return content;
}

这里的part就是要读取FXML的路径,也就是这个FXML文件所在包的路径

这里的setController(this) 指的是 所有的页面FXML都会有一个Controller去控制他 这个controller是一个java类

需要继承有loadFXML这个方法的类

我们姑且给这个类起名叫partParent

       在这个partParent类中依赖注入一个BordePane

再讲方法返回的content  Set给这个BorderPan就实现里页面的读取了

然后

在这里设置对应Controller的路径就可以了


现在有些人可能会有疑问了 ,那这和java反射有什么关系呢?


咱不着急 现在给你们说说


既然所有的Controller都要继承partParent

所以partParent类里肯定有一个path字段

给他的无参构造器加一个

  this.path = this.getClass().getSimpleName() + ".fxml";


这句话什么意思呢

就是让你的Controller和你的FXML名字一样 程序就可以通过这种反射的方式知道里的FXML文件叫什么(FXML和Controller要在一个包下)

这就只要Controller和FXML文件名相同 然后继承了partParent这个类 客户端启动的时候就可以自动读取加载了


猜你喜欢

转载自blog.csdn.net/phcgld1314/article/details/78016400
今日推荐