ФЭНДОМ


Главная | Описание языка | FXD | API | Примеры | Инструменты Разработки | Новости | Ресурсы | Форум


ClockFxПравить

Пошаговый пример создания JavaFx приложений с использованием IDE NetBeans

Что такое JavaFxПравить

JavaFx это технология компании Sun позволяющая быстро создавать GUI. На данный момент существует в виде интерпретатора, в ближайшее время появится компилятор.

Документацию по скриптовому языку и последние разработки можно скачать на сайте проекта OpenJFX. Примеры и статьи по использованию можно получить на сайте Planet JFX.

Постановка задачиПравить

В качестве примера возьмём известный виджет с часами и оформим его в виде отдельно запускаемого Java-приложения.

Готовый модуль будет выглядеть примерно так:

Clockfx1

Как и любое качественное приложение наш пример должен запоминать параметры введённые пользователем. Т.к. виджет достаточно простой ограничимся сохранением координат расположения окна. Вероятно, наиболее подходящим местом хранения координат является текстовый файл в домашней папке пользователя.

Хотя все действия по созданию примера можно выполнять и из командной строки, предлагаю воспользоваться IDE NetBeans и plug-in'ом для JavaFx-скриптов.

Создание проектаПравить

В NetBeans создадим новый проект с типом JavaFx Application:


Clockfx2

Для возможности создания кода на обычной Java добавим ссылку на библиотеки JavaFx (ClockFx/Properties/Libraries/Add library):


Clockfx3

В результате будет создан проект с файлом Main.fx.

Окно приложенияПравить

В файле Main.fx создадим класс Frame и добавим в его содержимое массив из двух View, для картинки фона и для виджета с заголовком и циферблатом. Во второй вью поместим BorderPanel для размещения полоски перетаскивания, крестика закрытия и виджета с часами.

Т.к. необходимо отрисовывать границы окна вручную добавим в класс строку вида:

undecorated: true 

Для возможности перетаскивания фрейма добавим в ImageView с картинкой заголовка следующий код:

onMouseDragged: operation(e:CanvasMouseEvent) 
 {
  model.mainWindowScreenX=model.mainWindowScreenX + e.localDragTranslation.x;
  model.mainWindowScreenY=model.mainWindowScreenY + e.localDragTranslation.y;
 } 

Также добавим код закрытия в событие картинки с крестиком.

В общем-то создание приложения закончено, должно получиться примерно 100 строк кода. Для запуска примера из IDE можно нажать клавишу F6.

Хранение настроекПравить

Для хранения координат окна с часами можно использовать стандартный Java-класс Properties. Для этого напишем пару функций:

operation exitFromApp()
 {
  var properties=new Properties();
  properties.setProperty("x",model.mainWindowScreenX.toString());
  properties.setProperty("y",model.mainWindowScreenY.toString());
  properties.store(new FileOutputStream(propertiesFileName()),"ClockFx");
  System.exit(0);
 }

этот метод должен вызываться в событии onClose фрейма и событии клика картинки с крестиком.

Код для загрузки координат:

try
 {
  var properties=new Properties();
  properties.load(new FileInputStream(propertiesFileName()));
  var numberFormat=NumberFormat.getInstance();
  model.mainWindowScreenX=numberFormat.parse(properties.getProperty("x"));
  model.mainWindowScreenY=numberFormat.parse(properties.getProperty("y"));
 }
catch(any)
 {
  //
 } 

Таким образом при закрытии приложения координаты окна будут сохраняться в файле clockfx.properties в домашней папке пользователя, обычно это c:\Documents and Setting\user_name


Clockfx4

При старте приложения координаты будут выставляться на предидущии (если это не первый запуск).

Сами координаты окна должны быть связаны (bind) с моделью в отдельном классе.

Создание исполняемого файлаПравить

Для создания исполняемого файла нам придётся добавить в проект обычный Java-класс и указать его в качестве стартового. В методе main этого класса нам нужна единственная строчка:

net.java.javafx.FXShell.main(new String[]{"clockfx/Main"});

- это вызов Fx-библиотек с указанием скомпилировать и запустить наш скрипт.

Также необходимо добавить в проект новую конфигурацию и указать в ней наш стартовый класс:


Clockfx5

После компиляции в корне проекта появится папка distr с исполняемым .jar-файлом и папкой lib c библиотеками JavaFx.

Если наличие дополнительных файлов нежелательно можно весь код поместить внутри основного файла. В простейшем случае достаточно открыть в каком-нибудь архиваторе и перетащить файлы классов мышкой:


Clockfx6

Запустить приложение можно просто щёлкнув по .jar-файлу мышкой.

Добавление заставкиПравить

На данный момент JavaFx не имеет отдельного компилятора а значит компиляция скриптов происходит при каждом запуске приложения. Чтобы не пугать пользователя задержками при старте программы обычно добавляют заставку с логотипом или просто картинкой.

В случае Java заставка должна быть изображением в формате .jpg и находиться в корне .jar. Имя файла должно быть прописано в манифесте приложения строкой вида

SplashScreen-Image: logo.jpg

Файл манифеста manifest.mf автоматически генерируется NetBeans'ом при создании проекта и находится в корне проекта. Файл с картинкой достаточно положить в папку src.

DownloadПравить

fxtest.zip - 2Мб

В файле находится готовое приложение с Fx-библиотеками и проект для NetBeans 6M10.


Текст заголовка Править

Обнаружено использование расширения AdBlock.


Викия — это свободный ресурс, который существует и развивается за счёт рекламы. Для блокирующих рекламу пользователей мы предоставляем модифицированную версию сайта.

Викия не будет доступна для последующих модификаций. Если вы желаете продолжать работать со страницей, то, пожалуйста, отключите расширение для блокировки рекламы.

Также на ФЭНДОМЕ

Случайная вики