通过多个ComboBoxes循环获取数据JavaFX
问题描述:
我正在尝试通过所有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
}
};
答
每个ComboBox
有SelectionModel
,从中可以得到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());
}