【发布时间】:2014-01-24 18:50:32
【问题描述】:
使用 FXML 或不使用 FXML 开发 JavaFX 应用程序的优缺点是什么?
对于开发企业 JavaFX 应用程序,应该遵循哪种方法?
【问题讨论】:
-
查看相关问题Java FX: declarative vs procedural,其中也讨论了这个话题。
标签: javafx javafx-2 fxml javafx-8 scenebuilder
使用 FXML 或不使用 FXML 开发 JavaFX 应用程序的优缺点是什么?
对于开发企业 JavaFX 应用程序,应该遵循哪种方法?
【问题讨论】:
标签: javafx javafx-2 fxml javafx-8 scenebuilder
FXML 缺点:加载和显示时间稍长。
FXML 优点:
在企业应用程序中一定要使用 FXML!
【讨论】:
我会在 Jurgens 列表中添加两个反对者。
如果您使用 FXML 实例化您的视图有点不方便。至少在我看来。
Node explorer = new MyExplorerWidget();
或
Node explorer = cdicontainer.newInstance(MyExplorerWidget.class);
比
更令人愉快FXMLLoader loader = new FXMLLoader(getClass().getResource("com.mycompany.some.very.long.name.MyExplorerWidget.fxml"),explorerwidgetresouces);//Of course we want our app internationalized
Node explorer = loader.load();
另一点是 FXML 是静态的。如果您想根据某些模型在运行时生成 UI,无论如何您都将编写 UI 代码。我最终得到了像这样的无用 fxml 文件PropertyGrid.fxml
<AnchorPane xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/8" fx:controller="PropertyGridController">
<children>
<VBox fx:id="vbox" layoutX="63.0" layoutY="-28.0" prefHeight="172.0" prefWidth="163.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
</children>
</AnchorPane>
还有PropertyGridController。
public class PropertyGridController{
@FXML
VBox vbox;
....
public void setModel(PropertySheet model){
//.... tons of code to generate the actual property grid and add it to the view
}
}
【讨论】: