Прошло много времени с тех пор, как я публиковал темы, связанные с JavaFX. Так что, если вы все еще продолжаете, круто!
Вступление
В этом посте я хочу рассказать об очень интересной функции, начиная с JavaFX 8 update 20, которая позволяет вашему приложению всегда быть на вершине других приложений. Это означает, что на вашем рабочем столе ваше приложение на основе JavaFX может быть плавающим виджетом, который останется над всеми другими приложениями (z-порядок). Примером может служить виджет погоды в верхнем правом углу, который никогда не будет скрыт другими приложениями. Итак, я очень рад поделиться с вами этой удивительной функцией «Всегда сверху».
история
Я п последние разработчики приложений Java Swing будет опираться на метод Window.setAlwaysOnTop (логическое) . Эта функция позволила разработчикам Swing создавать настольные приложения с естественным и естественным поведением. Начиная с JavaFX 1.x, эта функция была очень востребована (изначально запрашивалась Стивеном Чином @steveonjava для платформы WidgetFX). Эта функция является запросом билета JIRA RT-153 . На рисунке 1 показан запрос функции со статусом «Разрешено».
Хотя эта функция не попала в версии 1.x, 2.x и версии JavaFX до Java 8u20, она, наконец, здесь и сейчас. Для тех, кто не знает, как сообщать об ошибках или подавать запросы на новые функции, я рекомендую вам перейти к системе JavaFX JIRA .
Пример: виджет погоды
Предполагая, что вы знакомы с основами JavaFX начиная с версии 2.0, типичное приложение будет состоять из расширения из класса javafx.application.Application . При разработке настольных приложений JavaFX API платформы предоставит вам окно (javafx.stage.Stage). Объект Stage будет иметь следующие методы для доступа к свойству всегда сверху.
- alwaysOnTopProperty ()
- setAlwaysOnTop (булево)
- isAlwaysOnTop ()
Следующий фрагмент кода устанавливает Stage так, чтобы он всегда был сверху, используя метод setAlwaysOnTop (boolean).
public class KeyholeDemo extends Application { @Override public void start(Stage primaryStage) { primaryStage.initStyle(StageStyle.TRANSPARENT); primaryStage.setAlwaysOnTop(true); // code omitted... } public static void main(String[] args) { launch(args); } }
Как это работает
Показанный в листинге выше метод start () устанавливает прозрачность рабочей области как окно JavaFX без строки заголовка. Это позволяет приложениям иметь окна неправильной формы на рабочем столе. Если кто-то из веб-сайтов снова проконтролирует вас о JavaFX, задайте ему следующий вопрос: «Может ли HTML5 создавать окна неправильной формы на рабочем столе? (Всегда на вершине)». Затем, этап устанавливается так, чтобы он всегда был сверху с помощью метода setAlwaysOnTop () .
демонстрация
Поняв, что эта крайне востребованная функция доступна, я в основном обновил свой старый проект KeyholeWidget на Github и создал видео, демонстрирующее виджет на моем рабочем столе. Вот видео:
Чтобы увидеть полный список кодов, посетите проект Github KeyholeWidget .
Надеюсь, вам понравилась эта классная функция (я знаю, что мне понравилось). Как обычно, пожалуйста, оставьте комментарии ниже.
Удачного кодирования,
деревенщина