Java и MySQL база данных / Разработка приложения на JavaFx
https://t.me/javatgЯзык Java обладает большим набором функций, за счет которых вы можете построить как приложение под мобильное устройство, так и программу для ПК. Давайте создадим программу «Список дел» на JavaFx.
Инструменты что нам понадобятся
Наш проект будет не столь гигантским, но все же увесистым в плане количества функций и набора библиотек. Для разработки проекта нам понадобится:
- установленная на компьютере Java;
- среда разработки, например, IntelliJ IDEA;
- библиотека JavaFx;
- коннектор MySQL для работы с базой данных.
Создание проекта
Через любую среду разработки создайте новый JavaFx проект.
После создания проекта нужно добавить библиотеку JavaFx. Если вы работаете с Intellij IDEA, то вам нужно зайти в «File - Project Structure», далее перейти в модули и добавить в качестве нового модуля все файлы из папки lib
, что находится в скачанной папке JavaFx. После добавления не забываем установить галочку, а также нажать на Окей.
После заходим в настройки: «Run - Edit configuration» и в поле «VM Options» прописываем полный путь к папке JavaFx:
--module-path D:\Java\javafx-sdk-11.0.2\lib (Вот здесь прописываете ваш путь) --add-modules javafx.controls,javafx.fxml
Установка MySQL коннектора
Точно в таком же формате подключаем коннектор MySQL. Находим в Google коннектор MySQL для Java и скачиваем его на компьютер. Заходим в «File - Project Structure» и добавляем новую библиотеку – MySQL. Теперь проект настроен и мы можем приступить к созданию дизайна и написанию кода.
Для работы с базой данных вам также потребуется локальный сервер. Урок по работе с локальным сервером и программой PhpMyAdmin представлен ниже:
Создание дизайна
Для создания дизайна используйте программу Scene Builder. Внутри неё откройте ваш проект, а именно файл «sample.fxml». Через эту программу вы можете прописать весь дизайн для приложения.
После перетаскивания объектов и добавления к ним стилей, вы можете добавить ID для объектов, с которыми вы будете взаимодействовать, а также вам стоит указать рабочий контроллер для обработки всех функций в приложении.
В этой же программе можно посмотреть готовый вариант дизайна, а также же можно получить шаблон кода для класса контроллера. Для этого переходим: «View - Show sample skeletone code», где мы получаем весь код и копируем его. Этот же код разместите в контроллере вашего приложения.
Создание функций
Остается прописать весь функционал. Ниже представлен полный код основного контроллера, но также по этой ссылке вы можете скачать готовый проект всей программы.
Код класса контроллера:
package sample; import java.net.URL; import java.sql.SQLException; import java.util.ArrayList; import java.util.ResourceBundle; import javafx.event.EventHandler; import javafx.fxml.FXML; import javafx.scene.control.Button; import javafx.scene.control.Label; import javafx.scene.control.TextField; import javafx.scene.input.MouseEvent; import javafx.scene.layout.VBox; public class Controller { @FXML private ResourceBundle resources; @FXML private URL location; @FXML private TextField main_field; @FXML private Button add_task; @FXML private VBox all_tasks; // Объект на основен нашего класса для работы с БД DB db = null; @FXML void initialize() { // Инициируем объект db = new DB(); // Обработчик события. Сработает при нажатии на кнопку add_task.addEventHandler(MouseEvent.MOUSE_CLICKED, new EventHandler<MouseEvent>() { // Метод, что будет срабатывать @Override public void handle(MouseEvent mouseEvent) { try { // Проверяем является ли поле заполненным if(!main_field.getText().trim().equals("")) { // Вызываем метод из класса DB // через этот метод будет добавлено новое задание db.insertTask(main_field.getText()); loadInfo(); // Метод для подгрузки заданий внутрь программы main_field.setText(""); // Очищаем поле } } catch (SQLException e) { // Отслеживаем ошибки e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } } }); // Метод для подгрузки заданий внутрь программы loadInfo(); } // Метод для подгрузки заданий внутрь программы void loadInfo() { try { // Сначала очищаем от прошлых значений all_tasks.getChildren().clear(); // Получаем все задания из базы данных ArrayList<String> tasks = db.getTasks(); for(int i = 0; i < tasks.size(); i++) // Перебираем их через цикл // Добавляем каждое задание в объект VBox (all_tasks) all_tasks.getChildren().add( new Label( tasks.get(i))); } catch (SQLException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } } }
Видео на эту тему
Также вы можете просмотреть детальное видео по разработке данного приложения: