2017-10-14 54 views
1

我正在嘗試通過所有ComboBox實例循環以獲取用戶選擇的值並將該值添加到新的ArrayList,但我堅持如何繼續製作循環獲取值。通過多個ComboBoxes循環獲取數據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 
    } 
}; 

回答

3

每個ComboBoxSelectionModel,從中可以得到selectedItem。首先,創建組合框的列表,並與您的ComboBox<Integer>實例來填充它:

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

後來,你可以遍歷列表使用getSelectedItem()檢索選定的項目:

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