Erstellen FileChooser in FXML
Ich versuche zu schaffen, eine Dateiauswahl innerhalb einer fxml-Datei. Mein code sieht wie folgt aus:
<HBox alignment="CENTER">
<Label text="Tower 1 Image" />
<TextField fx:id="tower1ImageField" />
<FileChooser fx:id ="tower1FileChooser" />
</HBox>
Und der controller liest wie diese:
public class HudBuilderController{
@FXML TextField tower1ImageField;
@FXML FileChooser tower1FileChooser;
File towerFile;
@FXML TextField tower2ImageField;
@FXML FileChooser tower2FileChooser;
}
Aber ich erhalte eine Fehlermeldung, dass ich nicht verstehe:
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
Habe ich versucht, die Instanziierung der FileChooser innerhalb der Steuerung, aber ich glaube, ich muss mehr hinzuzufügen, um die fxml-Datei. Keine Hilfe? Danke!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den
FileChooser
nicht verlängern vonNode
daher Sie Sie nicht verwenden Sie es in IhremFXML
. Vergessen Sie nicht, dass die FXML ist nur eine Darstellung des user interface. Es gibt keine Notwendigkeit, fügen Sie alle Komponenten, die Sie verwenden möchten, in Ihrem Controller, um dieFXML
.Brauchen Sie nur zum initialisieren einer
FileChooser
im controller:JavaFX 8 API Referenz: FileChooser
Am Ende der
FileChooser
ist ein Dialogfeld öffnet sich auf Ihrem Bildschirm. Nicht sicher, warum Sie wollen, um es in deinem FXML? Nur verwenden Sie es in Ihrem code und die Arbeit mit dem Dateipfad, den Sie erhalten.Die Standard-Eigenschaft HBox ist
children
, die eine Liste von Knoten. Da Dateiauswahl-Dialog ist nicht ein Knoten, Sie können nicht fügen Sie es zu dem Kinder-Knoten Liste der HBox.