Javafx - это новая стандартная библиотека, используемая в Java для создания графических приложений, но многие программисты все еще придерживаются использования Swing или даже AWT. Вот несколько предложений о том, как создать отзывчивые, быстрые приложения с новыми удивительными функциями в наборе инструментов Javafx!
1. Атрибут значения
Если у вас есть полное понимание компонентов Javafx, Mobile столкнулся с собственностью. Наблюдается почти каждое значение в библиотеке FX, ширина раздела, размер изображения, текст на метке, дочерние элементы в списке и статус флажона. Атрибуты разделены на альтернативы: атрибуты для записи и читаемые атрибуты. Записные значения могут быть изменены, используя метод сеттера или напрямую. Javafx обрабатывает процесс обработки событий и гарантирует, что каждый компонент, который зависит от этого свойства, уведомляется. Учитываемые свойства имеют методы, которые позволяют вам получать уведомления при изменении их значений.
Пример:
// читаемый и записываемый stringproperty name = new SommertestringProperty ("emil"); // только для чтения visemblebooleAnvalue nameIsempty = name.isempty ();2. Привязка значения
Если у вас есть записи и читаемое значение, вы можете начать определять правила о том, как связаны эти значения. Свойство для записи может быть связано с читаемым свойством, поэтому его значение всегда будет соответствовать читабельному. Привязки не происходят сразу, но они будут сделаны до того, как будет соблюдать ценность (и посмотрите на то, что я там делал). Переплет может быть односторонним или двусторонним. Конечно, если они являются двунаправленными, оба свойства должны быть доступны для записи.
Пример:
Textfield Fielda = new TextField (); TextField FieldB = new TextField (); Fielda.PrefWidthProperty (). Bind (Fieldb.widthProperty ());
3. наблюдаемый список
Атрибуты - не единственные вещи, которые можно наблюдать. Если список инкапсулируется в наблюдательном регионе, то также могут наблюдаться члены списка. Модель ответа наблюдаемого появления довольно продвинута. Вы можете не только получать уведомления при изменении списка, но и посмотреть, как изменен список.
Пример:
Список <String> orElist = arrays.aslist ("foo", "bar", "bar"); vaseleblelist <string> list = fxcollections.observablelist (другой список); list.addlistener ((listChangelistener.Change <? Extends> изменение> изменение) -> {System.out.println ("Полученное событие."); (change.wasadded ()) {System.out.println ("eptions" + change.getAddedSublist () + "был добавлен."); list.set (1, "foo"); System.out.println ("Новый список:" + List);Запуск вывода приведенного выше кода выглядит следующим образом:
Старый список: [Foo, Bar, Bar] Получен Event.Items [Foo] был добавлен.items [bar] был удален. Новый список: [foo, foo, bar]
Как вы можете видеть, операция настройки запустит событие только один раз.
4. StringConverter
Иногда вы обнаружите, что вам не нужно извлекать значения из компонента, когда хотите создать привязку. Типичным примером этого является то, что у вас есть StringProperty с путем, который вы получаете от текстового поля. Если вы хотите иметь наблюдаемое свойство с этим значением, представленным в качестве пути, вам необходимо создать для него StringConverter.
Пример:
Textfield fileLocation = new TextField (); StringProperty location = fileLocation.textProperty (); Property <That> path = new SimpleObjectProperty <> (); Bindings.bindbidirectional (местоположение, Путь, New StringConverter <Thap> () {@Override public String toString (path Path) {return path.tostring ();} @Override public path fromString (String String) {return paths.get (string);}});Свойства объекта не являются двусторонними привязками к значениям текстового поля.
5. Выражения
Используя класс привязки выше, вы можете создать любой тип выражения. Например, у вас есть два текстовых поля, которые позволяют пользователям вводить информацию. Теперь я хочу определить домен только для чтения, который всегда будет содержать строку. Если длина двух строк равна, две строки будут смешиваться вместе с интервалами в характере за характером для отображения. Если длины не равны, отображается сообщение справки.
Пример:
TextField First = new TextField (); TextField Second = new TextField (); TextField Mix = new TextField (); Mix.TextProperty (). Bind (Bindings.When (First.LengthProperty (). Isequalto (Second.LengthProperty ())) .Then (Bindings.createstringBinding (() -> {int lengh Result = New Char [Длина * 2];Это всего лишь немного многих особенностей Javafx. Надеюсь, вы сможете найти более творческие способы использования этой системы событий!