2013-07-02 39 views
0

我的问题很简单:如何遍历javafx-combobox?我尝试了这么多,没有任何工作。 foreach-construct不起作用,combobox甚至没有大小和单个对象检索的方法,从而消除了使用简单for循环的可能性。我错过了什么吗?如何遍历JavaFX组合框?

回答

3

是的,你缺少..或者不是。但是,尽管如此,只需返回对象从您的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

是的,那会削减它。谢谢。 –