JavaFX
Регистрация
Advertisement

Главная | Описание языка | 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.


Текст заголовка[]

Advertisement