gpt4 book ai didi

java - 在 JavaFX 中使用大括号进行父组织

转载 作者:行者123 更新时间:2023-11-29 03:12:02 25 4
gpt4 key购买 nike

我正在用 JavaFX 编写用户界面并且不希望使用 FXML。如下使用牙套组织 child 是否传统有效?大括号除了让代码看起来更好之外没有任何用处。编译时大括号会被完全优化掉吗?

HBox top = new HBox();
{
Label white = new Label("White");
white.getStyleClass().addAll("white-check");
white.setMinWidth(160);
white.setMinHeight(60);

Label lightGray = new Label("Light Gray");
lightGray.getStyleClass().addAll("lightgray-check");
lightGray.setMinWidth(160);
lightGray.setMinHeight(60);

top.getChildren().addAll(white, lightGray);
}

如果我应该将此迁移到程序员 SE,请告诉我。

谢谢。

最佳答案

回答

从技术角度来看,我认为您的提议是可以的。

意见

从风格的角度来看,在实际上不需要的情况下使用额外的大括号对我来说有点奇怪,因为我从未见过有人写过这样的代码。但是,它确实读起来不错,没有真正的技术开销,并且当您考虑下面的一些替代方案时,它不需要完全不同的方法,如 DSL 或额外的语法和类型构造,如创建额外的方法或类。

我见过的更标准的方式是通过工厂方法或继承。例如:

备选方案

build 者

如果构建器仍然存在,自然而然的事情就是使用它们——但是构建器现在已被弃用,因此它们不是一个可行的替代方案。当 JavaFX 团队放弃构建器时,有许多替代建议(您可以通过关注 builder dropping thread 上的所有帖子找到),但我不认为真正找到了真正的标准替代品,只是不同选项。

工厂方法

HBox top = new HBox(
createLabel("White", "white-check"),
createLabel("Light Gray", "lightgray-check")
);
. . .
public Label createLabel(String text, String styleClass) {
Label label = new Label(text);
label.getStyleClass().add(styleClass);
label.setMinWidth(160);
label.setMinHeight(60);

return label
}

继承

HBox top = new HBox(
new CustomLabel("White", "white-check"),
new CustomLabel("Light Gray", "lightgray-check")
);
. . .
public class CustomLabel extends Label {
public CustomLabel(String text, String styleClass) {
super(text);
getStyleClass().add(styleClass);
setMinWidth(160);
setMinHeight(60);
}
}

备用域特定语言

例如ScalaFX代码:

var top = new HBox {
content = Seq(
new Label {
text = "White"
styleClass = Seq("white-check")
minWidth = 160
minHeight = 60
},
new Label {
text = "Light Gray"
styleClass = Seq("lightgray-check")
minWidth = 160
minHeight = 60
}
)
}

关于java - 在 JavaFX 中使用大括号进行父组织,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28821633/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com