JAVAFX ComboBox是空白的

时间:2016-09-22 00:21:00

标签: java combobox fxml

我是编程新手,似乎无法摆脱这种打嗝。我想有一个选项框,其中填充了选项并且立即存在。我已经尝试定义ObservableList然后创建一个ComboBox但是当我实际运行代码时它是空的。它出现后我不需要编辑它。这是我的代码:

ObservableList<String> options = 
FXCollections.observableArrayList(
    "Option 1",
    "Option 2",
    "Option 3"
);

@FXML
final ComboBox stores = new ComboBox(options);

@FXML
private Label label;

我使用带有FXid商店的Scene Builder在FXML文档中创建了组合框。

任何帮助将不胜感激! 提前谢谢。

2 个答案:

答案 0 :(得分:0)

当您使用anotation装饰javafx组件时,不应启动它。只有这个没问题;

 @FXML ComboBox stores;

在控制器类的initialize方法中。 添加此代码:

stores.setItems(options);

答案 1 :(得分:0)

  

- &gt;您的代码应该是这样的:

 ObservableList<String> options = 
    FXCollections.observableArrayList(
        "Option 1",
        "Option 2",
        "Option 3"
    );

    @FXML
    final ComboBox stores ;

    @FXML
    private Label label;

请勿尝试初始化fxml组件,FXMLLoader会为您执行此操作。您首先要调用FXMLLoader以便初始化节点,然后这里有两个不同的解决方案关于你的实施:

  

解决方案1(您的班级实施Initializable(适用于example))

/**
 * Called after the FXML layout is loaded.
 */
@Override
public void initialize(URL url, ResourceBundle rb) {

    //Add the ObservableList to the ComboBox
    stores.setItems(options); 

}
  

解决方案2(在调用此方法时,在fxml控制器中添加方法initialize()   你知道你的fxml组件已经初始化了)

/**
 * Called after the FXML layout is loaded.
 */
 @FXML
 public void initialize(){

    //Add the ObservableList to the ComboBox
    stores.setItems(options); 

 }