2017-10-14 14 views
1

ユーザーが選択した値を取得して新しいArrayListに値を追加するために作成したすべてのComboBoxインスタンスをループしていますが、ループを実行して値を取得します。複数のComboBoxをループしてデータを取得する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

ComboBoxあなたがselectedItemを得ることができ、そこからSelectionModelを持っています。まず、コンボボックスのリストを作成し、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()); 
} 
関連する問題