2017-10-14 4 views
1

J'essaie de boucler toutes les instances ComboBox que j'ai faites afin d'obtenir la valeur que l'utilisateur choisit et d'ajouter cette valeur à un nouveau ArrayList, mais je suis bloqué sur la façon de procéder en faisant le boucle pour obtenir les valeurs.Boucle à travers plusieurs ComboBoxes pour obtenir des données JavaFX

// row for comboboxes 
HBox numBox = new HBox(); 
numBox.setSpacing(16); 
numBox.setAlignment(Pos.CENTER); 
vbox.getChildren().add(numBox); 

// setup loop to create 8 combo boxes for user to pick 
int comboNum = 8; 
ComboBox<Integer> binaryBox = new ComboBox<Integer>(); 
for (int i = 0; i < comboNum; i++) { 
    binaryBox = new ComboBox<Integer>(); 
    List<Integer> binaryList = new ArrayList<Integer>(); 
    binaryList.add(0); 
    binaryList.add(1); 

    for (Integer num : binaryList) { 
     binaryBox.getItems().addAll(num); 
    } 

    binaryBox.setValue(0); 

    numBox.getChildren().add(binaryBox); 
} 

// way to get the value from each combo box 
ChangeListener<Number> update = 
     (ObservableValue <? extends Number> ov, Number oldValue, Number newValue) -> { 
    for (int i = 0; i < comboNum; i++){ 
     //todo 
    } 
}; 

Répondre

3

Chaque ComboBox a un SelectionModel à partir de laquelle vous pouvez obtenir le selectedItem. Tout d'abord, créer une liste de zones de liste déroulante et le remplir avec vos instances de ComboBox<Integer>:

List<ComboBox<Integer>> list = new ArrayList<>(); 
for (int i = 0; i < comboNum; i++) { 
    ComboBox<Integer> binaryBox = new ComboBox<Integer>(); 
    list.add(binaryBox); 
    … 
} 

Plus tard, vous pouvez parcourir la liste pour récupérer les éléments sélectionnés en utilisant getSelectedItem():

for (ComboBox<Integer> combo : list) { 
    System.out.println(combo.getSelectionModel().getSelectedItem()); 
}