谁能解释一下JavaFX中VBoxBuilder
和VBox
的区别?
VBoxBuilder boxBuilder = VBoxBuilder.create();
VBox vBox1 = new VBox();
添加构建器是为了方便。它们允许在一个命令中创建JavaFX节点,而无需引入新的变量。在某些情况下,它更方便。
接下来的两个代码片段给出了相同的结果,但后者没有创建临时变量。
没有建造者:
VBox vBox = new VBox();
vBox.setAlignment(Pos.CENTER);
vBox.getChildren().add(new Label("1"));
Scene scene = new Scene(vBox);
与建筑商:
Scene scene2 = new Scene(
VBoxBuilder.create().alignment(Pos.CENTER).children(new Label("1")).build());
注意::虽然您可能希望避免使用构建器,因为最近在开放的开发人员邮件列表中提出了一个问题,可能导致在未来的版本中弃用构建器:http://mail.openjdk.java.net/pipermail/openjfx-dev/2013-March/006725.html
关于构建器和构建器替代品
Sergey的回答涵盖了这个问题,这只是一些补充信息。
在JavaFX构建器的优点中,有一个JavaFX构建器创建者对构建器功能的很好的描述。
然而,正如Sergey指出的那样,构建器已经从核心JavaFX平台弃用了。Oracle正忙着从JavaFX示例代码中删除所有构建器引用。
尽管已弃用,但构建器功能将在JavaFX 8中存在并支持(因此在未来很长一段时间内)。
使用基于Java的JavaFX构建器的一些替代方案:
-
FXML可以用来为开发提供一种声明性语法,有点类似于构建器。
-
其他语言的JavaFX包装器,如GroovyFX和ScalaFX,通过为JavaFX对象定义创建自己的内部DSL,提供构建器风格的功能作为其核心实现的一部分。