У меня следующая проблема. Я написал простое приложение, которое работает как книжный магазин. Я хотел бы написать графический интерфейс для этого приложения. Я начал задаваться вопросом, как мне связать графический интерфейс с логикой приложения.
У меня есть класс DBManager, который позволяет мне выполнять некоторые операции, связанные с базой данных: добавлять новые объекты, удалять таблицы и т. д. Первая идея состоит в том, чтобы поместить экземпляр DBManager в класс GUI, а затем соединить кнопки с методами DBManager.
Я вообще считаю, что класс, отвечающий за графический интерфейс, должен выполнять взаимодействие с пользователем приложения. и передать информацию от пользователя другому классу, который будет отвечать за обработку запроса пользователя и предоставление ответа на него классу графического интерфейса, который покажет результат запроса. Я прав?
Большое спасибо за ответ. Я использовал свинг один раз в прошлом. В чем общая разница между Swing и JavaFX?
Есть огромные различия, на самом деле. JavaFX является заменой старой среды Swing. Я бы рекомендовал JavaFX вместо Swing, поскольку он более мощный и, возможно, более простой в использовании.




Вы пытаетесь выяснить, что использовать "архитектурный узор". В вашем случае я предлагаю вам использовать шаблон MVC, который состоит из трех компонентов: Model, View и Controller.
Из википедия:
Model: The central component of the pattern. It is the application's dynamic data structure, independent of the user interface. It directly manages the data, logic and rules of the application.
View: Any representation of information such as a chart, diagram or table. Multiple views of the same information are possible, such as a bar chart for management and a tabular view for accountants.
Controller: Accepts input and converts it to commands for the model or view.
Еще одна важная вещь, которую следует учитывать, — это структура, которую вы хотите использовать для создания своего приложения, поскольку она может навязать вам шаблон для использования. Наиболее часто используемыми платформами пользовательского интерфейса для создания многофункциональных клиентов для Java являются JavaFX и Swing.
Спасибо за ответ. Я красный о шаблоне MVC. Думаю, я увижу несколько примеров его реализации.
@ Flood2d Как мне реализовать подход MVC в JavaFX? Например, всякий раз, когда я использую GridPanes, я сохраняю каждый Node в отдельном 2D-массиве, чтобы иметь к нему доступ позже. Такой подход кажется хаком; как я должен так это?
@ap GridPane представляет собой контейнер и размещает узлы в сетке. Под узлами я подразумеваю другие элементы управления, такие как Label и TextField. В вашем классе контроллера вам нужна переменная Node для каждого элемента управления, к которому вам нужно получить доступ. Если вы не используете FXML, вероятно, у вас уже есть экземпляры этих переменных для создания пользовательского интерфейса. Если вы используете FXML, вам необходимо связать их, используя fx:id для каждого элемента управления и создав соответствующие переменные в классе контроллера. Вы должны проверить официальную документацию о том, как его использовать docs.oracle.com/javase/8/javafx/api/javafx/scene/layout/…
@ap, если вы используете FXML, вы можете проверить это руководство здесь docs.oracle.com/javafx/2/get_started/fxml_tutorial.htm
Этот вопрос слишком широк для StackOverflow. Сначала вам нужно определить, какую среду графического интерфейса вы хотите использовать (Swing или JavaFX), а затем просмотреть некоторые вводные руководства.