Главная | Описание языка | FXD | API | Примеры | Инструменты Разработки | Новости | Ресурсы | Форум
ClockFx[]
Пошаговый пример создания JavaFx приложений с использованием IDE NetBeans
Что такое JavaFx[]
JavaFx это технология компании Sun позволяющая быстро создавать GUI. На данный момент существует в виде интерпретатора, в ближайшее время появится компилятор.
Документацию по скриптовому языку и последние разработки можно скачать на сайте проекта OpenJFX. Примеры и статьи по использованию можно получить на сайте Planet JFX.
Постановка задачи[]
В качестве примера возьмём известный виджет с часами и оформим его в виде отдельно запускаемого Java-приложения.
Готовый модуль будет выглядеть примерно так:
Как и любое качественное приложение наш пример должен запоминать параметры введённые пользователем. Т.к. виджет достаточно простой ограничимся сохранением координат расположения окна. Вероятно, наиболее подходящим местом хранения координат является текстовый файл в домашней папке пользователя.
Хотя все действия по созданию примера можно выполнять и из командной строки, предлагаю воспользоваться IDE NetBeans и plug-in'ом для JavaFx-скриптов.
Создание проекта[]
В NetBeans создадим новый проект с типом JavaFx Application:
Для возможности создания кода на обычной Java добавим ссылку на библиотеки JavaFx (ClockFx/Properties/Libraries/Add library):
В результате будет создан проект с файлом 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
При старте приложения координаты будут выставляться на предидущии (если это не первый запуск).
Сами координаты окна должны быть связаны (bind) с моделью в отдельном классе.
Создание исполняемого файла[]
Для создания исполняемого файла нам придётся добавить в проект обычный Java-класс и указать его в качестве стартового. В методе main этого класса нам нужна единственная строчка:
net.java.javafx.FXShell.main(new String[]{"clockfx/Main"});
- это вызов Fx-библиотек с указанием скомпилировать и запустить наш скрипт.
Также необходимо добавить в проект новую конфигурацию и указать в ней наш стартовый класс:
После компиляции в корне проекта появится папка distr с исполняемым .jar-файлом и папкой lib c библиотеками JavaFx.
Если наличие дополнительных файлов нежелательно можно весь код поместить внутри основного файла. В простейшем случае достаточно открыть в каком-нибудь архиваторе и перетащить файлы классов мышкой:
Запустить приложение можно просто щёлкнув по .jar-файлу мышкой.
Добавление заставки[]
На данный момент JavaFx не имеет отдельного компилятора а значит компиляция скриптов происходит при каждом запуске приложения. Чтобы не пугать пользователя задержками при старте программы обычно добавляют заставку с логотипом или просто картинкой.
В случае Java заставка должна быть изображением в формате .jpg и находиться в корне .jar. Имя файла должно быть прописано в манифесте приложения строкой вида
SplashScreen-Image: logo.jpg
Файл манифеста manifest.mf автоматически генерируется NetBeans'ом при создании проекта и находится в корне проекта. Файл с картинкой достаточно положить в папку src.
Download[]
fxtest.zip - 2Мб
В файле находится готовое приложение с Fx-библиотеками и проект для NetBeans 6M10.