Javafx 2 JavaFX/如何在启动时加载/填充值?

Javafx 2 JavaFX/如何在启动时加载/填充值?,javafx-2,javafx,Javafx 2,Javafx,我今天刚开始使用JavaFX,已经需要一些建议了。我使用主应用程序(在我的application.fxml文件中指定了应用程序控制器)的start(Stage…方法中的FXMLLoader)加载application.fxml(使用Oracle SceneBuilder创建) …这里有更多代码。。。 现在,我在applicaton.fxml中有一个组合框,它有三个项目(默认项目)。我需要的是在启动期间用我自己的值填充该组合框。是否有人知道如何实现这一点,以及将相关代码片段放在哪里(app.A

我今天刚开始使用JavaFX,已经需要一些建议了。我使用主应用程序(在我的
application.fxml
文件中指定了应用程序控制器)的
start(Stage…
方法中的FXMLLoader)加载
application.fxml
(使用Oracle SceneBuilder创建)


…这里有更多代码。。。

现在,我在
applicaton.fxml
中有一个
组合框
,它有三个项目(默认项目)。我需要的是在启动期间用我自己的值填充该组合框。是否有人知道如何实现这一点,以及将相关代码片段放在哪里(
app.AppController
或类似的东西)?提前感谢。

在控制器中,您实现了可初始化接口。
然后在initialize方法中,只需添加代码以加载组合框。

首先删除FXML“Item 1”和“Item 2”上的默认值。。。 只是为了

<FXCollections fx:factory="observableArrayList">
    </FXCollections>

您有一些控制器用于fxml文件。在这里,您可以访问您的组合框。您可以将此代码放入元素设置列表(可能在initialize()方法中):

如果你真的不想编辑你的fxml文件,你可以先用
cmb_locations.getItems().clear()清除列表在设置新列表之前

public class ApplicationController implements Initializable {

    @FXML
    ComboBox cmb_locations;
    ...
    @Override
    public void initialize(URL url, ResourceBundle rb) {
        ...
        List<String> list = new ArrayList<String>();
        list.add("Item A");
        list.add("Item B");
        list.add("Item C");
        ObservableList obList = FXCollections.observableList(list);
        cmb_locations.getItems().clear();
        cmb_locations.setItems(obList);
        ...
    }
}
公共类应用程序控制器实现可初始化{
@FXML
组合框cmb_位置;
...
@凌驾
公共void初始化(URL、ResourceBundle rb){
...
列表=新的ArrayList();
列表。添加(“A项”);
列表。添加(“B项”);
列表。添加(“C项”);
ObservableList obList=FXCollections.ObservableList(列表);
cmb_locations.getItems().clear();
cmb_位置。设置项目(义务);
...
}
}

btw.
public void initialize(URL位置,ResourceBundle资源)
和(由SceneBuilder创建的)
void initialize()
方法之间有什么区别?我使用的是netbeans,当我使用controller从模式创建fxml时,它会为该方法生成
public
访问权限。在可初始化接口(JavaFX2.2.25版)中,我将此方法作为
public
。所以不确定SB为什么选择包私有。@nyrikki
public void initialize(URL位置,ResourceBundle资源)
是旧版本。现在您只需编写
void initialize()新版本。
@FXML
ComboBox cmb_locations

public void initialize(URL url, ResourceBundle resource) {
//here populate your combobox
}
public class ApplicationController implements Initializable {

    @FXML
    ComboBox cmb_locations;
    ...
    @Override
    public void initialize(URL url, ResourceBundle rb) {
        ...
        List<String> list = new ArrayList<String>();
        list.add("Item A");
        list.add("Item B");
        list.add("Item C");
        ObservableList obList = FXCollections.observableList(list);
        cmb_locations.getItems().clear();
        cmb_locations.setItems(obList);
        ...
    }
}