【发布时间】:2013-06-29 21:52:20
【问题描述】:
我的问题很简单:如何遍历 javafx-combobox?我尝试了很多,但没有任何效果。 foreach-construct 不起作用,combobox 甚至没有大小和单个对象检索的方法,从而消除了使用 simple-for-loop 的可能性。我错过了什么吗?
【问题讨论】:
标签: java combobox foreach iterator javafx
我的问题很简单:如何遍历 javafx-combobox?我尝试了很多,但没有任何效果。 foreach-construct 不起作用,combobox 甚至没有大小和单个对象检索的方法,从而消除了使用 simple-for-loop 的可能性。我错过了什么吗?
【问题讨论】:
标签: java combobox foreach iterator javafx
是的,你错过了..或者可能没有。但是,尽管如此,只需从您的 ComboBox 返回对象的 ObservableList 并使用 for each 来遍历该集合。这是一个例子:
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();
}
}
【讨论】:
for(String item: comboBox.getItems() 并且 javac 抱怨。实际上,除了您声明 ObservableList 包含字符串这一事实之外,您的代码也是如此。奇怪...ComboBox 中的项目指定数据类型。这个:ComboBox<String> comboBox = new ComboBox<String>();