Comment comprendre et utiliser " <fx:root>` , en JavaFX?
Il dit balise fx:root
a été ajouté à javafx 2.2, mais je ne comprends pas comment l'utiliser, mais avec cet exemple: http://docs.oracle.com/javafx/2/fxml_get_started/whats_new2.htm
main.xml
<?import javafx.scene.layout.GridPane?>
<GridPane fx:controller="sample.Controller"
xmlns:fx="http://javafx.com/fxml" alignment="center" hgap="10" vgap="10">
<fx:include fx:id="editorPane" source="editor.fxml"/>
</GridPane>
de l'éditeur.fxml sans fx:root
:
<?import javafx.scene.control.TextArea?>
<TextArea fx:id="editor" prefWidth="500" prefHeight="400"
fx:controller="sample.EditorController"
xmlns:fx="http://javafx.com/fxml"/>
de l'éditeur.fxml avec fx:root
:
<fx:root type="javafx.scene.control.TextArea"
fx:id="editor" prefWidth="500" prefHeight="400"
fx:controller="sample.EditorController"
xmlns:fx="http://javafx.com/fxml"/>
En fait, je ne trouve pas de différence pour les deux types de code. Dois-je raté quelque chose?
Vous devez vous connecter pour publier un commentaire.
<fx:root>
fournit une solution à la question de la définition d'un composant réutilisable avec FXML.Comme un exemple, imaginez que vous souhaitez définir un simple composant personnalisé composé d'un
TextField
etButton
contenues dans unHBox
. Vous avez besoin d'être représenté par une sous-classe deNode
, de sorte que vous pouvez écrire du code commeLa question est, vous avez besoin d'une classe Java qui est une sous-classe de
Node
, ainsi que le FXML. En Java pur (pas de FXML), vous pouvez le faire avec:À l'aide de FXML pour définir le composant personnalisé sans
<fx:root>
élément présente un problème, parce que vous avez besoin de la FXML à être une sorte de nœud, puis un autre nœud de l'instance pour représenter la classe elle d'emballage:et
Cette résultats dans MyComponent composé d'une HBox l'enchaînement d'un HBox habillage de la zone de texte et un Bouton. Supplémentaires, redondant HBox est un résultat d'avoir besoin d'un Nœud pour le FXML racine et un Nœud pour représenter le composant.
<fx:root>
donne un mécanisme pour créer le Nœud que le composant (la classe Java) et puis charger le fichier FXML à utiliser que le nœud racine:et
Maintenant
MyComponent
a la même structure que l'original de toutes-version de Java, unHBox
contenant unTextField
et unButton
. Vous ne pouvez pas faire cela en utilisant le FXML sans<fx:root>
élément.