[редактировать]

UI, Дизайн


Как убрать подсветку на кнопке при фокусе?

Способ убрать подсветку при фокусе на компоненте.

Откройте CSS стиль всего проекта и добавьте туда следующий css код:

.button:focused {
    -fx-focus-color: transparent;
}

Здесь мы задаем цвет фокуса кнопки как прозрачный (transparent).


Как сделать сворачивание программы?

Простой способ свернуть и вернуть окно.

Для сворачивание и разворачивания у каждой формы есть свойство iconified.

$this->iconified = true; // свернуть окно.

$this->iconified = false; // вернуть окно.

Вы также с помощью этого свойства можете проверить, свернуто окно или нет:

if ($this->iconified) {
    alert('Окно свернуто');
}

Как поменять шрифт у списка?

Изменение шрифта компонента через css стили.

Возможность задать шрифт компонента есть не у всех типов компонента, например такой возможности нет у компонента Список, однако через css стили можно изменить все, в том числе и шрифт.

Вы можете отредактировать CSS стиль объекта или внедрить этот стиль в общий стиль проекта:

-fx-font-size: 16px; /* меняем размер шрифта */
-fx-font-weight: bold; /* делаем шрифт жирным */
-fx-font-style: italic; /* делаем шрифт наклонным, курсивом */
-fx-font-family: "Trebuchet MS" /* меняем сам шрифт */

Чтобы поменять цвет текста, нужно использовать другое css свойство -fx-text-fill:

-fx-text-fill: #CC0237;

Как динамически поменять или задать событие объекту?

Несколько способов задать событие объекту.

Первый способ

Для того, чтобы поменять событие объекту вы можете использовать метод on():

use php\gui\event\UXKeyEvent;

$this->edit->on('keyUp', function(UXKeyEvent $e) {
    alert("Нажали на кнопку $e->codeName");
});

Для того чтобы отключить событие, вы можете использовать метод off:

$this->edit->off('keyUp');

Метод on не совсем универсальный, он умеет задавать только базовый набор событий без параметров.

Второй способ

Более предпочтительный вариант, работающий для любых событий - это делать через метод формы bind(), на которой объект расположен:

use php\gui\event\UXKeyEvent;

$this->bind('edit.keyUp-Enter', function (UXKeyEvent $e) {
    alert("Нажали на кнопку Enter");
});

Метод $this->bind() можно применять только для объектов, которые уже были добавлены на форму и которые имеют свой id.


Как показать сообщение?

Различные способы показать разные сообщения и диалоги.

Для начала, вы можете использовать самую простую функцию alert, которая показывает текстовое сообщение из строки:

alert('Привет Мир!');

Для отладки и показа в сообщение значения переменной вы можете использовать pre() или dump():

pre($var);
dump($var);

pre это аналог print_r, а dump аналог var_dump из php.

Типы сообщений

Если вы хотите использовать разные типы сообщений, например, для показа ошибок, используйте утилитный класс php\gui\UXDialog:

use php\gui\UXDialog;

UXDialog::show($text); // аналог alert()

UXDialog::show($error, 'ERROR'); // показать как ошибку
UXDialog::show($warn, 'WARNING'); // показать как предупреждение

Очень важно знать, что метод show() не приостанавливает выполнение кода, для того чтобы ожидать действий пользователя на сообщение (когда он нажмет кнопку), используйте метод showAndWait.

use php\gui\UXDialog;

UXDialog::showAndWait($error, 'ERROR');

Вопросительное сообщение Да и Нет

Для того, чтобы показать такое сообщение используйте метод UXDialog::confirm():

use php\gui\UXDialog;

if (UXDialog::confirm('Вы уверены что хотите выйти?')) {
    app()->shutdown();
}

Как динамически создать кнопку и задать ей событие?

Статья о динамическом создании объектов, на примере кнопки.

Любые компоненты, в том числе и модульные, можно создавать во время выполнения. Для примера, создадим кнопку во время показа формы (в событии показа):

use php\gui\UXButton;

$button = new UXButton();
$button->text = 'Наша Кнопка';

$button->size = [100, 20];
$button->x = 100;
$button->y = 50;

$button->on('click', function () {
    alert('Привет');
});

$this->add($button); // добавляем кнопку на форму.