我正在用javafx编写一个程序,需要有一个下拉框,我可以选择多个选项并在按下“提交”按钮后应用于所选的每个选项,但是我遇到了麻烦区分单击“提交”按钮后选择了哪些选项。
它不允许我将CheckMenuItem类中的任何方法(如.isSelected())应用于observableList,因为List似乎用MenuItems填充,而不是CheckMenuItems,但是当我创建MenuButton时,我使用了一个Observable的CheckMenuItems。
有任何帮助吗?提前致谢!
答案 0 :(得分:2)
public final ObservableList<MenuItem> getItems()
MenuButton getItems返回MenuItem的ObservableList,你必须显式地转换为CheckMenuItem,然后调用与CheckMenuItem相关的方法。
示例代码:
public class CheckMenuItemTest extends Application {
private ObservableList<CheckMenuItem> list = FXCollections.observableArrayList();
@Override
public void start(Stage stage) throws Exception {
HBox root = new HBox();
final MenuButton menuButton = new MenuButton();
CheckMenuItem item1 = new CheckMenuItem("item1");
CheckMenuItem item2 = new CheckMenuItem("item2");
CheckMenuItem item3 = new CheckMenuItem("item3");
CheckMenuItem item4 = new CheckMenuItem("item4");
list.addAll(item1,item2,item3,item4);
menuButton.getItems().addAll(list);
Button button = new Button("Submit");
root.getChildren().addAll(menuButton,button);
button.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent actionEvent) {
for(MenuItem item : menuButton.getItems()) {
CheckMenuItem checkMenuItem = (CheckMenuItem) item;
if(checkMenuItem.isSelected()) {
System.out.println("Selected item :" + checkMenuItem.getText());
}
}
}
});
Scene scene = new Scene(root,300,300);
stage.setScene(scene);
stage.show();
}
public static void main(String[] args) {
launch(args);
}
}