2016-02-07 10 views
6
<ComboBox fx:id="schaltung" layoutX="347.0" layoutY="50.0" prefHeight="63.0" prefWidth="213.0"> 
      <items> 
       <FXCollections fx:factory="observableArrayList"> 
        <String fx:id="reihe" fx:value="Reihenschaltung" /> 
        <String fx:id="parallel" fx:value="Parallelschaltung" /> 
       </FXCollections> 
      </items> 
</ComboBox> 

Dodałem to do mojego pliku FXML, ponieważ nie mogłem dowiedzieć się, gdzie mogę dodać elementy do mojego ComboBox w SceneBuilder. Czy można dodawać elementy za pośrednictwem SceneBuilder, czy muszę to robić ręcznie?Elementy ComboBox za pomocą Scene Builder?

+3

Nie, nie ma mechanizmu, aby to zrobić w SceneBuilder. Ogólnie rzecz biorąc, zwykle ma sens dodawanie ich do kontrolera. –

+0

Również dlatego, że wydajesz się wybierać z ograniczonego zestawu opcji, używanie enum może być dobrym pomysłem. – fabian

Odpowiedz

7

Nie można dodawać elementów do combobox za pomocą SceneBuilder. Możesz dodawać pliki FXML, jak to robiłeś, lub za pomocą kontrolera podanego poniżej.

@Override 
public void initialize(URL location, ResourceBundle resources) { 
    comboBox.getItems().removeAll(comboBox.getItems()); 
    comboBox.getItems().addAll("Option A", "Option B", "Option C"); 
    comboBox.getSelectionModel().select("Option B"); 
} 
+0

Tylko gdy 'Controller implementuje Initializable' – saikosen

+0

Przyjmę SO przez tutoriale w dowolnym dniu) – ycomp

+0

Sugeruję wywoływanie: comboBox.getItems(). Clear() zamiast removeAll. –

1

W odpowiedzi na saikosen comment: Jeśli kontroler nie nie wdrożyć Initializable można użyć:

@FXML 
public void initialize() { 
    comboBox.getItems().removeAll(comboBox.getItems()); 
    comboBox.getItems().addAll("Option A", "Option B", "Option C"); 
    comboBox.getSelectionModel().select("Option B"); 
} 
Powiązane problemy