JavaFX, FXML und SceneBuilder

thor_norsk

Bekanntes Mitglied
Guten Tag, ich habe eine FXMLController und eine x.fxml Datei programmiert. Ich würde gerne Wissen, ob ich über SceneBuilder, die FXML-Methoden, die ich in FXMLController programmiert habe, in der x.fxml Datei einbinden kann, ohne die manuell in die x.fxml Datei ein zu tippen.
Ich hoffe ihr habt mich verstanden😀. Zum Beispiel: Wenn ich unter SceneBilder ganz oben rechts Properties --> ImageView-->Image anklicke, kann ich Icon für Symbolleiste wählen, bzw den Pfad angeben, um Grafik zu laden.
Ich hätte gerne gewusst, ob ich eine @FXML - Methode die ich programmiert habe, so ähnlich in meinem x.fxml einbinden kann ?
Ich könnte natürlich in der x.fxml die Zeile einfügen: onAction="#Klick".

Danke.
 
Ja, das sollte funktionieren. Dazu muss der Controller in der fxml Datei eingetragen sein und die Projektstruktur muss stimmen. Also fxml Datei z.B. unter src/main/resources und der controller unter src/main/java.
 
Wenn die VBox das root Element der FXML ist: nein. Das muss da sein! Damit werden die namespaces der XML Elememte festgelegt.

Wobei ich die angegebenen Namespaces ohne Versionen kenne, aber das spielt keine wirkliche Rolle:
Java:
xmlns="http://javafx.com/javafx" xmlns:fx="http://javafx.com/fxml"

Ohne dass du den Namespace fx festlegst, kannst Du auch diesen nicht verwenden z.B. beim "fx:controller".
 
FXML sucht im eigenen ordner und zum relativen ordner in resources der auf der gleichen ebene ist
Ich hatte mich über diesen Punkt etwas gewundert. Aber in meinen Tests war es tatsächlich wichtig für den SceneBuilder, dass der Pfad in src und resources gleich ist. Wenn der Controller in de.kneitzel (also Pfad de/kneitzel) war, dann musste das fxml auch in dem Verzeichnis de/kneitzel liegen, damit ich in dem Scene Builder im Tab Code dann auch DropDowns bekommen habe.

Das war ein Punkt, der mir so nicht bewusst war und den ich im ersten Moment angezweifelt habe, aber meine Versuche haben ein ganz klares Bild gezeigt! (Nur falls da noch jemand wie ich ein "Zweifler" sein sollte 🙂 ).
 

Zurück
Oben