java - 如何在 FXML 中显示和访问由 Java 类创建的 ComboBox?

标签 java combobox fxml countries

我正在为学校项目仅使用 Java 和 FXML 制作应用程序。我不允许使用场景生成器。在应用程序中,用户将其信息输入到表单中。然后,该信息用于创建三个可能类之一的实例。表单的字段之一是“国籍”,因此我想使用包含国家/地区的下拉列表供他们选择。在 MBec 对这个问题的回答的帮助下,我在 Main.java 类中创建了一个 ComboBox(它最初在我的 Controller 中):link

我的问题是:如何从 FXML 文件中访问我在 Main.java 中创建的 ComboBox 并将其显示在现有场景中?我目前有一个占位符组合框,但尚未填充。

来自 Main.java 的填充组合框:

ObservableList<String> all_countries = Stream.of(Locale.getISOCountries())
                .map(locales -> new Locale("", locales))
                .map(Locale::getDisplayCountry)
                .collect(Collectors.toCollection(FXCollections::observableArrayList));

final ComboBox<String> country_list = new ComboBox<>(all_countries);  

我尝试在 FXML 中创建的空 ComboBox 上设置 onAction 属性,该方法使用创建然后从 Main.java 返回填充的 ComboBox 的方法,但正如预期的那样,这不起作用。

我确实通过将组合框设置为新场景的根来验证它是否有效。这只是为了确保组合框本身不是问题的原因。用于测试的新场景:

我还尝试以不同的方式制作 ComboBox(请参阅 Keyuri Bhanderi 的答案: link ),但这也不起作用。

我现有场景的代码:

Parent root = FXMLLoader.load(getClass().getResource("view/sample.fxml"));
primaryStage.setTitle("form");
primaryStage.setScene(new Scene(root, 600, 600));

我希望能够从sample.fxml 中访问ComboBox“country_list”并将其显示在我现有的场景中,因此这就是我的目标。我对 Java 和 FXML 很陌生,所以答案可能是显而易见的,但我已经在这个问题上停留了一两天了。对任何错误的格式表示歉意;这是我第一次使用SO。 如果有人有时间的话我还有一个问题。 getISOCountries() 是询问国籍时使用的最佳 Locale 方法吗?我注意到它比询问国籍/国家时的表格有更多的选项,而且它也不完全按字母顺序排列。提前谢谢大家。

最佳答案

在浏览了其他一些有关类似问题的问题后,我设法弄清楚了。我在 FXML 中创建了一个 HBox,如下所示:

<HBox
    id="country_container"
    fx:id="country_container"
    GridPane.columnIndex="1"
    GridPane.rowIndex="12"
    />

它只是充当 ComboBox 的容器。然后我在 Controller 的初始化方法中执行了以下操作:

countries_combo();
combo_box.getChildren().add(country_list);

第一行调用创建并返回 ComboBox 的方法,第二行将其作为子项添加到手动创建的 HBox。

关于java - 如何在 FXML 中显示和访问由 Java 类创建的 ComboBox?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55754122/

相关文章:

c# - 如何在 WPF 中将多个组合框与一个数据源一起使用?

c# - 在 WPF MVVM 应用程序的 ComboBox 中设置默认选定项

java - 从java中的线程池运行静态方法

java - 在java中列出组合框中的对象

java - 避免将 InstanceOf 与访问者模式一起使用 - Java

java - 使用 JavaFX 缩放窗口时自动将程序内容居中

java - 如何处理鼠标事件FXML

JavaFX Scene Builder - 使用变量值

java - 有没有办法在不阻塞线程的情况下暂停单元测试

java - 处理 Android fragment 事务问题的正确/最佳方法