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