我想做的是有一个带有三行文本的按钮。 第一行始终存在。第二行和第三行创建为TilePane对象,其中包含三个元素。我要尝试做的是根据配置参数有选择地删除第二行和第三行的最后两个元素,或者中间项目。
我尝试过的是:
firstRow.getChildren().addAll(leftFront, leftCentre, leftBack);
secondRow = new TilePane();
secondRow.getChildren().addAll(rightFront, rightCentre, rightBack);
leftCentre.visibleProperty().addListener((ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) -> {
if (newValue) {
firstRow.getChildren().remove(leftBack);
firstRow.getChildren().remove(leftFront);
} else {
firstRow.getChildren().remove(leftCentre);
}
});
leftCentre.visibleProperty().bind(labelProp);
rightCentre.visibleProperty().addListener((ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) -> {
if (newValue) {
secondRow.getChildren().remove(rightBack);
secondRow.getChildren().remove(rightFront);
} else {
secondRow.getChildren().remove(rightCentre);
}
});
rightCentre.visibleProperty().bind(labelProp);
根据SimpleBooleanProperty labelProp
,带有左,右命名项的元素是我要删除或保留的元素。如果将labelProp
设置为false,则会出现四个外部元素。但是,如果将labelProp
设置为true,则只会显示三个的顶行。
那我做错了吗?
答案 0 :(得分:0)
解决了我的问题。看来BooleanProperty的初始值正在删除我希望在初始化时看到的值。因此,当我尝试使它们重新出现时,节点已被删除。
有没有办法使TilePane中的元素对齐?例如
First1 First2
Second1 Second2
是将TilePane资格设置为CENTER时在屏幕上看到的内容。我想看的是:
First1 First2
Second1 Second2
所以看起来有点整洁。