JPHP #1 - Создаем GUI приложения
После первой статьи с вводным уроком, рассмотрим создание GUI приложением с помощью JavaFX.
Для начала поставим нужные пакеты (в заранее созданный проект):
Если вы разрабатываете не под windows, потребуется поставить пакет jphp-gui-jfx-mac или jphp-gui-jfx-linux.
Теперь можно приступить к созданию самого приложения.
Внутри коллбэк функции напишем саму форму. В jphp-gui-ext имеется множество различных элементов, которые имеют общий базовый класс UXNode, и как следствие у всех компонентов имеются одинаковый интерфейс (за исключением специфичных для компонента свойств).
Для создания формы потребуется создать класс UXForm, заодно зададим размеры окна, заголовок окна.
У gui api очень хорошая русскоязычная документация (но далеко не везде), и найти нужное свойство не должно составить проблем.
С помощью $form->show() мы выводим форму.
Теперь, давайте разместим компоненты на форме. Создадим простую программу, которая будет приветствовать пользователя, спросив его имя. Для этого создадим кнопку и поле для ввода.
Чтобы добавить наш компонент на форму используем метод add у формы.
Осталось только добавить поведение при нажатии на кнопку. Для добавления событий у любого компонента (и форм в том числе) существует метод on. В первом аргументе передаем действие, на которое должно быть срабатывание события, вторым - коллбэк функцию, которая должна обрабатывать событие.
Событие click реагирует на нажатие любой клавиши мыши. Помимо этого существуют и другие события, как например mouseEnter, срабатывающий когда курсор находится на объекте или action, который срабатывает на любое действие. Конечно, этим списком возможные действия не ограничиваются.
В качестве результата программы выведем обычное сообщение с приветствием пользователя. Для этого существует специальный класс, для вывода различных форм.
Одно важное замечание, если, например, в обработчик добавить любое событие, которое будет выполняться значительное время (как sleep(5);), то программа при выполнении обработчика "подвиснет", это происходит из-за того что, событие будет выполняться в том же потоке. Подробнее о работе с потоками и многопоточностью будет в одной из следующих статей.
Для более подробной информации о компонентах, и их свойствах можно обратиться к официальной документации:
Для начала поставим нужные пакеты (в заранее созданный проект):
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);), то программа при выполнении обработчика "подвиснет", это происходит из-за того что, событие будет выполняться в том же потоке. Подробнее о работе с потоками и многопоточностью будет в одной из следующих статей.
Для более подробной информации о компонентах, и их свойствах можно обратиться к официальной документации: