Javafx ist die neue Standardbibliothek, die in Java verwendet wird, um Grafikanwendungen zu erstellen, aber viele Programmierer halten sich immer noch an die Verwendung von Swing oder sogar AWT. Hier finden Sie einige Vorschläge, wie Sie reaktionsschnelle, schnelle Anwendungen mit neuen fantastischen Funktionen im JavaFX -Toolset erstellen können!
1. Attributwert
Wenn Sie ein vollständiges Verständnis der JavaFX -Komponenten haben, hat Mobile die Eigenschaft begegnet. Fast jeder Wert in der FX -Bibliothek kann beobachtet werden, die Breite der Partition, die Größe des Bildes, der Text im Etikett, die untergeordneten Elemente in einer Liste und den Status des Kontrollkästchens. Attribute sind in Alternativen unterteilt: Beschreibbare Attribute und lesbare Attribute. Beschreibbare Werte können geändert werden, entweder mit der Setter -Methode oder direkt. JavaFX übernimmt den Ereignisbearbeitungsprozess und stellt sicher, dass jede Komponente, die von dieser Eigenschaft abhängt, benachrichtigt wird. Lesbare Eigenschaften haben Methoden, mit denen Sie Benachrichtigungen erhalten können, wenn ihre Werte geändert werden.
Beispiel:
// lesbar- und schriftliche StringProperty name = new SimplingPringProperty ("emil"); // nur schreibgeschützt beobachtbarBooleanValue nameIsEmpty = iseMpty ();2. Binden Sie den Wert
Wenn Sie einen beschreibbaren und lesbaren Wert haben, können Sie Regeln darüber definieren, wie diese Werte zugeordnet sind. Eine beschreibbare Eigenschaft kann an eine lesbare Eigenschaft gebunden werden, sodass ihr Wert immer mit dem lesbaren übereinstimmt. Die Bindungen treten nicht sofort vor, aber sie werden vor dem Wert des Wertes erfolgen (und sehen, was ich dort getan habe). Die Bindung kann in Einweg oder zweiwegs sein. Wenn sie bidirektional sind, müssen beide Eigenschaften natürlich beschreibbar sein.
Beispiel:
Textfield fielda = new textField (); textField fieldb = new textField (); fielda.prefWidtHProperty (). Bind (fieldb.widthProperty ());
3.. Beobachtbare Liste
Attribute sind nicht die einzigen Dinge, die beobachtet werden können. Wenn die Liste in einen Beobachtungslisten eingekapselt ist, können auch die Mitglieder der Liste beobachtet werden. Das Antwortmodell der Beobachtungsliste ist ziemlich fortgeschritten. Sie können nicht nur Benachrichtigungen erhalten, wenn die Liste geändert wird, sondern auch, wie die Liste geändert wird.
Beispiel:
List <String> otherList = arrays.aslist ("foo", "baly", "baly"); beobachtungselist <string> list = fxcollections.observablelist (otherList) list.addListener ((listchangelistener.change <?? (Änderung. list.set (1, "foo"); System.out.println ("neue Liste:" + list);Die laufende Ausgabe des obigen Codes lautet wie folgt:
Alte Liste: [Foo, Bar, Bar] erhalten Event.Items [Foo] wurde hinzugefügt. IITEMS [Bar] wurde entfernt. Neue Liste: [Foo, Foo, Bar]
Wie Sie sehen können, wird der Einstellungsvorgang nur einmal ein Ereignis ausgelöst.
4. StringConverter
Manchmal werden Sie feststellen, dass Sie die Werte nicht aus einer Komponente extrahieren müssen, wenn Sie eine Bindung erstellen möchten. Ein typisches Beispiel dafür ist, dass Sie einen StringProperty mit einem Pfad haben, den Sie von einem Textfeld erhalten. Wenn Sie eine beobachtbare Eigenschaft mit diesem als Pfad dargestellten Wert haben möchten, müssen Sie einen StringConverter dafür erstellen.
Beispiel:
TextField filelocation = new textField (); StringProperty location = filelocation.textProperty (); Eigenschaft <path> path = new SimpleObjectProperty <> (); Bindings.bindbidirectional (Ort, Pfad, neuer StringConverter <Path> () {@Override public String toString (Pfad Path) {return path.toString ();} @Override public path from String (String String) {return paths.get (String);}});Objekteigenschaften sind keine Zwei-Wege-Bindungen für die Werte des Textfelds.
5. Ausdrücke
Mit der obigen Bindungsklasse können Sie jede Art von Expression erstellen. Beispielsweise haben Sie zwei Textfelder, mit denen Benutzer Informationen eingeben können. Jetzt möchte ich eine schreibgeschützte Domäne definieren, die immer eine Zeichenfolge enthält. Wenn die Längen der beiden Saiten gleich sind, werden die beiden Saiten für die Anzeige mit Charakter-für-Charakter-Intervallen gemischt. Wenn die Längen nicht gleich sind, wird eine Hilfenachricht angezeigt.
Beispiel:
Textfield first = new textField (); textfield Second = new textField (); textfield mix = new textField (); mix.textProperty (). Bind (bindungen.when (first.lengthProperty (). isequalto (Second.lengthProperty ()) .Then (Bindings.CreateStringBinding (() -> {int Länge = First.LengthProperty (). Second.TextProperty (). Geben Sie zwei Saiten mit genau derselben Länge ein. "));Dies ist nur ein bisschen der vielen Merkmale von Javafx. Hoffentlich finden Sie kreativere Möglichkeiten, um dieses Ereignissystem zu nutzen!