2013-07-02 2 views
0

내 질문은 간단합니다. 어떻게 javafx-combobox를 반복 할 수 있습니까? 나는 너무 많은 노력을 기울였습니다. foreach-construct는 작동하지 않으며 combobox에는 크기 및 단일 객체 검색을위한 메서드가 없기 때문에 간단한 for 루프를 사용할 가능성이 없습니다. 내가 놓친 게 있니?JavaFX-combobox를 반복하는 방법은 무엇입니까?

답변

3

예. 누락되었거나 어쩌면 없습니다. 그럼에도 불구하고 ObservableList 개의 객체를 ComboBox에서 반환하고 각각을 사용하여 해당 컬렉션을 반복합니다. 다음은 예입니다.

import javafx.application.Application; 
import javafx.collections.ObservableList; 
import javafx.event.ActionEvent; 
import javafx.event.EventHandler; 
import javafx.scene.Scene; 
import javafx.scene.control.Button; 
import javafx.scene.control.ComboBox; 
import javafx.scene.layout.GridPane; 
import javafx.stage.Stage; 

public class ComboBoxExample extends Application { 

    public static void main(String[] args) { 
     launch(args); 
    } 

    @Override 
    public void start(Stage primaryStage) { 
     GridPane gridPane = new GridPane(); 
     Button button = new Button("Print items from ComboBox"); 
     final ComboBox<String> comboBox = new ComboBox<String>(); 
     //Add some items 
     comboBox.getItems().addAll("John","Jane","Laina"); 

     button.setOnAction(new EventHandler<ActionEvent>() { 
      @Override 
      public void handle(ActionEvent actionEvent) { 
       //To iterate through ComboBox 
       ObservableList<String> items = comboBox.getItems(); 
       for(String item : items){ 
        System.out.println(item.toString()); 
       } 
      } 
     }); 

     gridPane.add(comboBox,0,0); 
     gridPane.add(button,0,1); 

     primaryStage.setScene(new Scene(gridPane,320,280)); 
     primaryStage.show(); 
    } 
} 
+0

아, ObservableList를 선언하고 있습니다. ... 감사합니다. 그러나 나는 왜 이것이 작동하는지 궁금하다 :'for (String item : comboBox.getItems()'와 javac이 불평했다. 실제로 여러분의 코드는 ObservableList에 문자열을 포함한다고 선언하는 것 외에는 동일하다. –

+0

아마도 'ComboBox'에있는 항목에 대한 데이터 유형을 지정하지 않았기 때문일 것입니다 : ComboBox comboBox = new ComboBox (); ' –

+0

그래, 그거야. –

관련 문제