Категории
Уведомление:подпишитесь Заходите к нам в Telegram-чат
Skripters » Персональные блоги » zbkm » JPHP #1 - Создаем GUI приложения

JPHP #1 - Создаем GUI приложения

zbkm
Опубликовано 13-06-2021, 23:22
После первой статьи с вводным уроком, рассмотрим создание GUI приложением с помощью JavaFX.

Для начала поставим нужные пакеты (в заранее созданный проект):
jppm add jphp-gui-ext
jppm add jphp-gui-jfx-win

Если вы разрабатываете не под windows, потребуется поставить пакет jphp-gui-jfx-mac или jphp-gui-jfx-linux.
Теперь можно приступить к созданию самого приложения.

UXApplication::launch(function(){

});

Внутри коллбэк функции напишем саму форму. В jphp-gui-ext имеется множество различных элементов, которые имеют общий базовый класс UXNode, и как следствие у всех компонентов имеются одинаковый интерфейс (за исключением специфичных для компонента свойств).
Для создания формы потребуется создать класс UXForm, заодно зададим размеры окна, заголовок окна.

    $form = new UXForm();
    $form->title = 'Программа';
    $form->size = [300, 300];
    $form->resizable = false;

    $form->show();

У gui api очень хорошая русскоязычная документация (но далеко не везде), и найти нужное свойство не должно составить проблем.
С помощью $form->show() мы выводим форму.

Теперь, давайте разместим компоненты на форме. Создадим простую программу, которая будет приветствовать пользователя, спросив его имя. Для этого создадим кнопку и поле для ввода.

    $button = new UXButton(); // создаем саму кнопку
    $button->text = "Кнопка"; // задаем текст, который будет на кнопке
    $button->position = [150, 150]; // задаем позицию, на котором она будет расположена
    $form->add($button);

    $field = new UXTextField();
    $field->position = [100, 100];
    $field->promptText = "Введите имя"; // задаем подсказку для ввода
    $form->add($field);

Чтобы добавить наш компонент на форму используем метод add у формы.

Осталось только добавить поведение при нажатии на кнопку. Для добавления событий у любого компонента (и форм в том числе) существует метод on. В первом аргументе передаем действие, на которое должно быть срабатывание события, вторым - коллбэк функцию, которая должна обрабатывать событие.

    $button->on('click', function () use ($field) {
        UXDialog::show($field->text . ", привет!");
    });

Событие click реагирует на нажатие любой клавиши мыши. Помимо этого существуют и другие события, как например mouseEnter, срабатывающий когда курсор находится на объекте или action, который срабатывает на любое действие. Конечно, этим списком возможные действия не ограничиваются.
В качестве результата программы выведем обычное сообщение с приветствием пользователя. Для этого существует специальный класс, для вывода различных форм.
Одно важное замечание, если, например, в обработчик добавить любое событие, которое будет выполняться значительное время (как sleep(5);), то программа при выполнении обработчика "подвиснет", это происходит из-за того что, событие будет выполняться в том же потоке. Подробнее о работе с потоками и многопоточностью будет в одной из следующих статей.
Для более подробной информации о компонентах, и их свойствах можно обратиться к официальной документации:
Понравилось?
0
0
0
949
0