JavaFX:将新对象链接到控件

标签 java javafx

我对 JavaFX 相当陌生,我正在尝试弄清楚 FXML 文件和 Controller 之间的链接到底是如何工作的。我的问题是我正在使用 ControlsFX 中的 CheckComboBox创建对象时,需要获取组合框中可能选项的字符串集。

private void initializeComboBoxes() {
    final ObservableList<String> projects = FXCollections.observableArrayList();
    for (String x : db.getProjectBag()) {
        projects.add(x);
    }

    comboBoxProject = new CheckComboBox<String>(projects);

    ...

问题是,当我将 FXML 链接的 CheckedComboBox 字段设置为该新对象时(就我而言,每次可能的选项发生变化时都需要执行此操作,例如基于数据库中的值) ,它不会显示在用户界面上。

也许我错过了如何将用户界面控件动态链接到其底层对象,但我们将非常感谢您的帮助。

最诚挚的问候,

威斯

最佳答案

切勿在 Java 中为 FXMLLoader 已创建的对象( Controller 中具有标记为 @FXML 的引用的任何对象)创建新对象。

默认情况下,组合框将使用一个空的项目列表创建,只需获取该列表并设置您想要的值。

例如,在 Controller 代码中使用以下代码,根据需要调用 initializeComboBox() 方法:

@FXML 
CheckComboBox comboBoxProject;

private void initializeComboBox() {
    final List<String> projects = new ArrayList();
    for (String x : db.getProjectBag()) {
        projects.add(x);
    }

    comboBoxProject.getItems().setAll(projects);
}

关于JavaFX:将新对象链接到控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59256420/

相关文章:

java - 如何使用 "ff"在 Java 中格式化日期?

java - 如何使图像大小可调

java - 使用 Streams 将嵌套整数列表转换为二维数组 ( List<List<Integer>> -> int[][] )

java - Hadoop 在 Ubuntu 14 上安装 2.6.0 - Java 错误

JavaFX 11 : Add a graphic to a TitledPane on the right side

java - Spring 中 POJO 之间是否有自动翻译器?

JavaFX FileRader 读取行 gui 显示计数器

java - ListView细胞工厂: wrong font weight

java - ReadOnlyBooleanWrapper : incorrect behaviour when used with Bindings. 或

javafx - 听众工作,不绑定(bind)