2017-10-14 1 views
1

사용자가 선택한 값을 얻기 위해 만든 모든 ComboBox 인스턴스를 반복하려고합니다.이 값을 새 ArrayList에 추가하지만 진행 방법을 고수하고 있습니다. 루프를 사용하여 값을 가져옵니다.다중 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()); 
} 
관련 문제