есть ли способ расширить контроллер af xml - PullRequest
0 голосов
/ 27 мая 2020

Я создаю приложение и хочу поместить на каждой странице в приложении текст «привет» с меткой, которая записывает имя подключенного сейчас клиента, как я могу это сделать ??? например: если я сейчас подключен, в верхней части всех страниц приложения я увижу hello Nadeen

1 Ответ

2 голосов
/ 27 мая 2020

Используйте композицию, а не наследование.

Наследование - это неправильная концепция, чтобы пытаться достичь чего-то вроде этого. Вместо этого добавьте для этого создание родительского макета и добавьте функциональность для отображения в нем контента.

Пример:

public class ParentController {

    @FXML
    private StackPane container;

    public void setContent(Node content) {
        // replace old container content
        container.getChildren().setAll(content);
    }

    // code for setting the name...

}
<VBox>
    <children>
        <Label text="Nadeen"/>
        <StackPane fx:id="container" VBox.vgrow="ALWAYS"/>
    <children>
</VBox>

Это позволяет вам заменять контент результатами загрузки различных f xml файлов.

ParentController controller = ...;
controller.setContent(someNode);
...
controller.setContent(someOtherNode);

Убедитесь, что вы правильно обращаетесь к контроллеру, как описано здесь:

Передача параметров JavaFX F XML

Вы также можете go с подходом пользовательских компонентов ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...