【发布时间】:2016-10-21 18:24:28
【问题描述】:
我有一个组合框,其中列出了设置的值。我已使用 setEditable(true) 方法使其可编辑,但如何获取用户输入的值?我尝试了 getSelectionModel().getSelectedItem() 和 getValue() 方法,但没有成功。
这是代码。
public class Comparator extends Application {
@Override
public void start(Stage stage) {
stage.setTitle("ComboBoxSample");
Scene scene = new Scene(new Group(), 450, 250);
ComboBox<String> emailComboBox = new ComboBox<>();
emailComboBox.getItems().addAll("A","B","C","D","E");
emailComboBox.setEditable(true);
Button b = new Button("get text");
GridPane grid = new GridPane();
grid.setVgap(4);
grid.setHgap(10);
grid.setPadding(new Insets(5, 5, 5, 5));
Label to = new Label("To: ");
Label selected = new Label();
grid.add(to, 0, 0);
grid.add(emailComboBox, 1, 0);
grid.add(b, 2, 0);
grid.add(selected, 3, 0);
b.setOnAction(e -> {
selected.setText(emailComboBox.????);
});
Group root = (Group) scene.getRoot();
root.getChildren().add(grid);
stage.setScene(scene);
stage.show();
}
public static void main(String[] args) {
launch(args);
}
}
我实际上想要获取新输入的值。 PS:如果以防万一,只是为了避免混淆。我可以输入列表中不存在的任何字符串。这将是输入的新值。
【问题讨论】:
-
“没有成功”是什么意思?
emailComboBox.getValue()应该可以正常工作。会发生什么? -
当我在文本框中输入并单击按钮时,它什么也不显示。
-
您是否在输入值后按回车键来提交该值?
-
getValue() 在按下回车后起作用。这不是我要找的。 getEditor().getText() 效果很好。