Введение в Javafx
Когда мы упоминаем о библиотеке графических интерфейсов Java, мы обычно слышим Swing или более старый AWT, включая два, представленные во многих книгах. Многие школы и учебные занятия также преподают эти две технологии. Но на самом деле, обе технологии устарели в течение длительного времени. Хотя не сложно изучить свинг, на самом деле очень трудно написать интерфейс, используя его. Поскольку его интерфейс и код не разделены, код должен быть заполнен большим количеством координат при написании, и его крайне трудно изменить. Лучшее в этом отношении - WPF Microsoft, и я могу только сказать, кто может его использовать, а кто это знает.
Конечно, хотя написание клиентских графических программ является слабостью Java, Java не отказалась от этих усилий. Javafx, представленная сегодня, является новейшей технологией Java для написания графических интерфейсных программ. Если вы планируете написать графические интерфейсные программы в Java без какого -либо исторического бремени, настоятельно рекомендуется использовать Javafx.
Это ресурсы и документация на Javafx на официальном сайте Oracle.
Это официальная выборка, мы можем обратиться к разделу Javafx, чтобы узнать, как ее использовать. Ниже приведена одна из программ Fractal Javafx. Нажатие на номера, приведенные выше, может ввести различные микроскопические дисплеи. Такое похоже на наблюдение за микроскопическим миром вирусов, что очень шокирует.
Как установить
Пока у вас есть последняя версия JDK 8, вы можете использовать библиотеку Javafx. Если он не установлен, тогда запустите его быстро.
Начните быстро
Первая программа
Создайте новый проект, затем напишите следующий класс, а затем составьте и запустите, чтобы увидеть результаты. Нет необходимости объяснять эту программу. Если у вас есть опыт обучения свинг и других графических интерфейсных фреймворков, это должно быть очень легко понять этот код. Конечно, так как Javafx - новая вещь, я также использую новую функцию Java 8 - Lambda.
Пакет yitian.javafxsample; import javafx.application.application; import javafx.scene.scene; import javafx.scene.control.button; import javafx.scene.layout.stackpane; import javafx.stage.stage; public clus btn = new Button (); btn.settext ("hello, world"); btn.setonaction (event -> {System.out.println ("Привет, мир!");}); StackPane root = new Stackpane (); root.getchildren (). Добавить (btn); сцена сцена = новая сцена (root, 300, 250); World! "); PrimaryStage.setscene (сцена); PrimaryStage.show ();} public static void main (string [] args) {запуск (args);}}Продолжительный скриншот выглядит следующим образом.
Пользовательский ввод
Эта программа может использоваться для обработки ситуаций входа в систему пользователя. Код выглядит следующим образом, и важные части были прокомментированы. Последняя часть кода использует функцию SetonAction, чтобы добавить событие Click в кнопку, и текст будет отображаться при нажатии кнопки.
Public Class UserInput Extends Application {@Override public void start (Stage Primary State). Вызывает исключение {// сетка сетки GridPane Grid = new GridPane (); Grid.SetAlignment (pos.center); // Сетка вертикальная расстояние (10). Вставки (25, 25, 25, 25)); // новая сцена сцена сцена = новая сцена (сетка, 300, 275); PrimaryStage.setscene (сцена); // Добавить титлеткст сцены = новый текст («Добро пожаловать»); сцентиттл.setfont (font.font («Tahoma», FontweePle.Normal, 20); 1); // Добавить теги и текстовые окны userbel username = new Label («Имя пользователя:»); grid.add (имя пользователя, 0, 1); Textfield usertextfield = new Textfield (); grid.add (usertextfield, 1, 1); // Добавить теги и коробки пароля PW = New Label ("Password:"); Passwordfield (); grid.add (pwbox, 1, 2); // Добавить кнопку подчинения кнопки Btn = новая кнопка ("login"); hbox hbbtn = new Hbox (10); hbbtn.setAlignment (pos.bottom_right); hbbtn.getChild (). Add (btn); grid.add (hbbtn.getchild (). actionTarget = new Text (); Grid.Add (ActionTarget, 1, 6); Btn.SetonAction (Event -> {actionTarget.setFill (color.firebrick); ActionTarget.settext ("login");}); PrimaryStage.setTitle ("javafx josted"); primary vible vible (vise vise vible vible vible vible (vible vise vise vible vizd visвийт. {запуск (args);}}Скриншот запуска программы выглядит следующим образом.
Эта программа на самом деле не сложна, она использует макет сетки, а затем добавляет каждый элемент в сетку. Для значения атрибута макета сетки, пожалуйста, обратитесь к официальной фигуре.
Проектирование пользовательского интерфейса с FXML
Современные графические интерфейсные фреймворки поддерживают разделение интерфейса и кода, а более часто используемый описательный язык - XML, такой как QML для QT и XAML для WPF. Конечно, у Javafx также есть аналогичный язык под названием FXML. Если вам нужно подробно знать FXML, вы можете ссылаться на статью «Введение в FXML» на официальном сайте Oracle.
Давайте переписаем приведенный выше небольшой пример в FXML, и каждая часть комментируется. Если вы узнали другие подобные описательные языки, вы обнаружите, что они на самом деле похожи. Единственное, что следует отметить, это атрибут FX: Controller в макете, который указывает контроллер, а функция контроллера состоит в том, чтобы написать соответствующий код интерфейса.
<? xml version = "1.0" Encoding = "utf-8"?> <!-Импорт класса-> <? Импорт javafx.geometry.insets?> <? Import javafx.scene.control.*?> <? Import javafx.spene.layout.*?> <? Import javafx.scene.font.font?> <? javafx.scene.text.text?> <!-Установите макет-> <gridpane xmlns = "http://javafx.com/javafx" xmlns: fx = "http://javafx.com/fxml" fx: controller = "yitian.javafxsample.controller" fx. prefwidth = "600,0" alignment = "center" hgap = "10" vgap = "10"> <adding> <insets top = "25" right = "25" внизу = "10" слева = "25"/> </padding> <!-добро пожаловать текст-> <Текст = "joven" gridpane.columndex = "0". Gridpane.columnspan = "2"> <font> <font name = "consolas" size = "20"/> </font> </text> <label text = "username:" gridpane.columnidex = "0" gridpane.rowindex = "1"/> <textfield Gridpane.columnidex = "1" gridexpane.1 "/> </> <textfield.columnidex =" 1 "gridexpane. <Label text = "пароль:" gridpane.columnidex = "0" gridpane.rowindex = "2"/> <пароль fx: id = "пароль" gridpane.columnidex = "1" gridpane.rowindex = "2"/> <!-кнопка и подсказка Text-> <hbox ocdecing = "10" lecignment = "Bute_ Bint_>" Gridpane.columnIndex = "1" gridpane.rowindex = "4"> <button Text = "Show Password" onAction = "#ShowPasswordButton"/> </hbox> <text fx: id = "hinttext" gridPane.columnIndex = "0" gridpane.columnspan = "2" gridpane.halindex = "0". Gridpane.rowindex = "6"/> </gridpane>
Ниже приведен контроллер, соответствующий этому файлу FXML, который является стандартным классом Java. Идентификатор, указанный атрибутом FX: ID в FXML, может быть объявлен как поле класса в контроллере, с помощью которого вы можете взаимодействовать с компонентами интерфейса. Точно так же, обработчик событий, объявленный Onaction, является методом в контроллере. Обратите внимание, что эти поля и методы должны быть аннотированы с использованием аннотации @FXML.
Импорт javafx.event.actionevent; import javafx.fxml.fxml; import javafx.scene.control.passwordfield; import javafx.scene.text.text. {hinttext.settext ("Show Password:" + password.getText ());}}Последнее, что нужно изменить, - это основная программа. В основной программе вам необходимо использовать FXMloAder для загрузки ресурсов FXML, а другие детали не сильно изменились.
открытый класс USEFXML Extends Application {@Override public void start (Stage PrimaryTage) Throws Exception {parent root = fxmloader.load (getClass (). getResource ("ui.fxml")); сцена = сцена = новая сцена (root, 300, 275); primarystage.settle ("Использование. Fxml "); PrimaryStage.setscene (Scene); PrimaryStage.show ();} public static void main (string [] args) {запуск (args);}}Скриншот запуска программы выглядит следующим образом.
Если вы хотите изменить стили компонентов, Javafx предоставляет интерфейс CSS, что позволяет нам изменять стили напрямую с помощью файлов CSS. Во -первых, вам нужно добавить ссылку на соответствующую таблицу стилей в файле FXML. @ Перед именем файла означает, что файл CSS и файл FXML находятся в том же каталоге.
<gridpane> <stylesheets> <url value = "@style.css"/> </stylesheets> <gridpane/>
Листы в стиле похожи на обычные листы в стиле, за исключением того, что требуется специфичный для Javafx префикс.
#btnshowpassword {-fx-background-color: deeppink;}Селектор идентификатора используется выше, поэтому соответственно, атрибуты ID также требуются в FXML.
<Button id = "btnshowpassword" text = "showpassword" oNaction = "#showpasswordbutton"/>
Программа после настройки показана на рисунке. Я просто изменил цвет фона кнопки. На самом деле, есть много стилей, которые можно изменить, в том числе фон программы и т. Д., Которые, которые заинтересованы, могут попробовать его самостоятельно.
Суммировать
Вышеуказанное посвящено этой статье о предварительном понимании Javafx. Если какой -либо студент хочет использовать Java для написания программ графического интерфейса, вы можете рассмотреть возможность использования Javafx, что является очень хорошим выбором. Надеюсь, это будет полезно для всех. Если есть какие -либо недостатки, пожалуйста, оставьте сообщение, чтобы указать это. Спасибо, друзья, за вашу поддержку на этом сайте!