Я пытаюсь сделать кнопку с тремя строками текста на ней.
Первая строка всегда присутствует. Вторая и третья строки создаются как объекты 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, появится только верхняя строка из трех.
Так что я делаю не так?