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); // добавляем кнопку на форму.