2016-09-22 20 views
0

Ich bin sehr neu in der Programmierung und kann nicht scheinen, über diesen Schluckauf zu kommen. Ich hätte gerne eine Auswahlbox, die mit Optionen bestückt ist und die sofort verfügbar ist. Ich habe versucht, die ObservableList zu definieren und dann eine ComboBox zu erstellen, aber es ist leer, wenn ich den Code tatsächlich ausführe. Ich muss dieses Array nicht bearbeiten, nachdem es angezeigt wird. Hier ist mein Code:JAVAFX ComboBox ist leer

Ich habe die Combobox im FXML-Dokument mit Scene Builder mit FXid speichert erstellt.

Jede Hilfe wäre willkommen! Vielen Dank im Voraus.

Antwort

0

Wenn Sie Ihre javafx-Komponente mit einer Anmerkung versehen, sollten Sie sie nicht initiieren. Nur das ist in Ordnung;

@FXML ComboBox stores; 

in der Initialisierungsmethode in Ihrer Controller-Klasse. diesen Code hinzu:

stores.setItems(options); 
+0

funktioniert perfekt, vielen Dank! –

0

-> sollte Ihr Code wie folgt sein:

ObservableList<String> options = 
    FXCollections.observableArrayList(
     "Option 1", 
     "Option 2", 
     "Option 3" 
    ); 

    @FXML 
    final ComboBox stores ; 

    @FXML 
    private Label label; 

nicht fxml Komponenten zu initialisieren Versuchen Sie, für Sie die FXMLLoader wird dies tun. Sie müssen zuerst die FXMLLoader anrufen, damit die Knoten initialisiert werden und dann sind hier zwei verschiedene Lösungen basierend auf Ihrer Implementierung:

Lösung 1 (Ihre Klasse implementiert Initializable (für example))

/** 
* Called after the FXML layout is loaded. 
*/ 
@Override 
public void initialize(URL url, ResourceBundle rb) { 

    //Add the ObservableList to the ComboBox 
    stores.setItems(options); 

} 

Lösung 2 (die Methode initialize() in Ihrem fxml Controller hinzufügen, wenn diese Methode dann aufgerufen wird Sie wissen, dass Ihre fxml Komponenten initialisiert wurde)

/** 
* Called after the FXML layout is loaded. 
*/ 
@FXML 
public void initialize(){ 

    //Add the ObservableList to the ComboBox 
    stores.setItems(options); 

} 
+0

Funktioniert perfekt, danke :) –