JavaFX中VBoxBuilder和VBox的区别

4
有人能解释一下 JavaFX 中的 VBoxBuilderVBox 之间的区别吗?
VBoxBuilder boxBuilder = VBoxBuilder.create();
VBox vBox1 = new VBox();

JavaFX构建器的创建者之一在JavaFX构建器的优势中对构建器功能进行了很好的描述。然而,正如Sergey所指出的那样,构建器已经从核心JavaFX平台中弃用。JavaFX针对其他语言的包装器,例如GroovyFXScalaFX,作为其核心实现的一部分提供构建器功能。 - jewelsea
2个回答

6

为了方便起见,提供了构造器。它们允许在一个命令中创建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


3

关于构建器和构建器替代方案

Sergey已经回答了这个问题,这只是一些补充信息。

JavaFX构建器之一的创建者在JavaFX构建器的优势中对构建器功能进行了很好的描述。

然而,正如Sergey所指出的那样,构建器已经从核心JavaFX平台中弃用。Oracle正在忙于从JavaFX示例代码中删除所有构建器引用。

即使被弃用,构建器功能也将存在并受到JavaFX 8的支持(因此将长期存在)。

有一些使用基于Java的JavaFX构建器的替代方案:

  • 可以使用FXML提供类似于构建器的声明性语法进行开发。

  • 其他语言的JavaFX包装器,例如GroovyFXScalaFX,通过创建自己的内部DSL来定义JavaFX对象以提供构建器样式的功能。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接