使用FXLM和不使用FXML的优缺点是什么?

时间:2014-01-07 06:57:02

标签: javafx javafx-2 fxml javafx-8 scenebuilder

使用FXML或不使用FXML开发JavaFX应用程序有哪些优缺点?

对于开发企业JavaFX应用程序应遵循哪种方法?

2 个答案:

答案 0 :(得分:4)

FXML缺点:加载和显示需要稍长的时间。

FXML优点:

  1. 使用Scene Builder进行快速场景开发/模拟。
  2. FXML不是编译语言;您无需重新编译代码即可查看更改。只需重新加载FXML文件即可。
  3. 它提供了GUI与逻辑/控制器的明确分离。
  4. 因此,您可以使用同一个控制器拥有不同版本的场景/视图。这对于demo来说非常方便。
  5. 可以在读取文件时本地化FXML文件的内容。
  6. 绝对在企业应用程序中使用FXML!

答案 1 :(得分:3)

我会在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代码。我最终得到了像PropertyGrid.fxml

这样无用的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
    }
}