2017-10-14 50 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()); 
}