Рубрики
Без рубрики

Несколько сцен JavaFX MVP

Я сделал демонстрацию, показывающую способ создания приложения JavaFX с несколькими сценами с использованием MVP. Если ты… С тегами java, javafx, программирование, mvp.

Я сделал демонстрацию о том, как показать способ создания нескольких сцен JavaFX приложение, использующее MVP .

Если вы не знакомы с MVP , вы должны сначала понять это. Вы можете прочитать об этом здесь .

Исходный код находится здесь .

О

Я искал способ создать приложение JavaFX , используя только одно окно или сцену и несколько сцен . То, как я хотел этого достичь, заключалось в создании механизма для управления докладчиками с помощью стека. Делая это, я мог перемещаться между докладчиками и сцены обычным образом, открывая новые пары presenter и просмотр , и возможность возврата к предыдущим открытым докладчикам .

И я хотел получить это, не прилагая больших усилий к каждому presenter исходному коду.

Решение

Основные классы и интерфейсы

PresenterManager Ведущий менеджер:

Это самый важный класс. Он управляет переходами между докладчиками. Докладчики уведомить этот класс, чтобы он добавил докладчиков или закрыл их.

Abstractпредставитель:

Все ведущие должны расширять этот класс, поскольку он определяет интерфейсы для взаимодействия с классом PresenterManager . Этот класс использует notify Manager Для добавления нового Presenter() и notify Manager Для Удаления методов Presenter() для достижения этой цели. Эти методы защищены .

Обзор презентации:

Все представления должны реализовывать этот интерфейс . В нем есть метод getView Scene() для извлечения javafx.scene. Сцена объект из вида объекта. Этот метод используется Presenter Manager для установки видимой сцены .

Объяснение механизма

Во-первых , все классы |/presenters должны расширять класс Abstract Presenter и реализовывать все абстрактные методы:

get Derived Presenter(): используется Presenter Manager для получения нового презентатора для открытия. Внутри этого метода вы можете использовать оператор switch или что-то похожее на возврат экземпляра желаемого презентатор , потому что один презентатор может открыть другой докладчики . Например, у вас может быть приложение, которое показывает окно с двумя кнопками, первая из которых открывает ГРУБУЮ сцену продуктов, а другая – грубую сцену клиентов.

get Presenter View(): используется Presenter Manager для получения PresenterView открываемого presenter . А затем получите файл javafx.scene. Сцена из нее.

Во-вторых , вы должны реализовать методы, которые вызывают notify Manager Для добавления нового Presenter() и уведомить менеджера Об Удалении презентатора() для добавления нового презентатора и удаления текущего презентатора соответственно. Смотрите исходный код этого проекта .

Третий , в взглядах ваших |/докладчиков вы должны установить слушатели в кнопках или виджеты вы хотите запустить события открытия или закрытия докладчиков и связать его с методами, созданными на предыдущем шаге . И вы должны реализовать метод getView Scene() , чтобы вернуть javafx.scene. Сцена из этого представления объект. Смотрите исходный код этого проекта .

В-четвертых , в методе start(Stage) вашего основного класса создайте экземпляр Presenter Manager и установите initial presenter с помощью setInitialPresenter(AbstractPresenter) . Затем вы можете вызвать show() метод Абстрактный презентатор для отображения сцены или окна вашего приложения.

Вы всегда можете проверить исходный код этого проекта, если вы не поняли это описание.

Изображения демо-версии

Первая сцена

Вторая Сцена

Третья Сцена

Оригинал: “https://dev.to/r0land013/multiple-scenes-javafx-mvp-38i4”