Créer FileChooser dans le FXML
Je suis en train de créer un fileChooser dans un fichier fxml. Mon code ressemble à ceci:
<HBox alignment="CENTER">
<Label text="Tower 1 Image" />
<TextField fx:id="tower1ImageField" />
<FileChooser fx:id ="tower1FileChooser" />
</HBox>
Et le contrôleur lit comme ceci:
public class HudBuilderController{
@FXML TextField tower1ImageField;
@FXML FileChooser tower1FileChooser;
File towerFile;
@FXML TextField tower2ImageField;
@FXML FileChooser tower2FileChooser;
}
Cependant, j'obtiens une erreur que je ne comprends pas:
Caused by: java.lang.IllegalArgumentException: Unable to coerce javafx.stage.FileChooser@5e85f35 to class javafx.scene.Node.
at com.sun.javafx.fxml.BeanAdapter.coerce(Unknown Source)
at javafx.fxml.FXMLLoader$Element.add(Unknown Source)
at javafx.fxml.FXMLLoader$ValueElement.processEndElement(Unknown Source)
at javafx.fxml.FXMLLoader.processEndElement(Unknown Source)
... 26 more
J'ai essayé de l'instanciation de la FileChooser dans le contrôleur, mais je pense que j'ai besoin d'ajouter le fichier fxml. Toute aide? Merci!
Vous devez vous connecter pour publier un commentaire.
La
FileChooser
ne s'étendent deNode
, par conséquent, vous ne pouvez pas l'utiliser dans votreFXML
. N'oubliez pas que le FXML est juste une représentation de votre interface utilisateur. Il n'est pas nécessaire d'ajouter tous les composants que vous souhaitez utiliser dans votre Contrôleur à l'FXML
.Vous avez seulement besoin d'initialiser un
FileChooser
dans votre contrôleur:JavaFX 8 Référence de l'API: FileChooser
À la fin de la
FileChooser
est une boîte de dialogue qui s'ouvre sur votre écran. Pas sûr de savoir pourquoi vous voulez l'avoir dans votre FXML? Juste l'utiliser dans votre code et de travailler avec le chemin que vous obtenez.La propriété par défaut de HBox est
children
, qui est une liste de nœuds. Depuis FileChooser n'est pas un Nœud, vous ne pouvez pas l'ajouter à la enfants de la liste des nœuds de HBox.