JavaFx удалить элемент из TilePane - PullRequest
0 голосов
/ 20 ноября 2018

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

Так что я делаю не так?

1 Ответ

0 голосов
/ 20 ноября 2018

Разобрался с моей проблемой.Похоже, что начальное значение BooleanProperty удаляло значения, которые я ожидал увидеть при его инициализации.Поэтому, когда я попытался заставить их появиться снова, Узлы были удалены.

Есть ли способ сделать элементы в TilePane выровненными?Например,

 First1    First2

Second1   Second2

- это то, что я вижу на экране, когда я устанавливаю для параметра TilePane значение CENTER.То, что я хочу видеть, это:

First1   First2

Second1  Second2  

, так что это выглядит немного аккуратнее.

...