2016-09-22 64 views
0

我对编程非常陌生,似乎无法摆脱这种呃逆。我想有一个选项框,其中填充了选项,并立即出现。我尝试过定义ObservableList,然后创建一个ComboBox,但实际运行代码时它是空的。出现后,我不需要编辑该数组。这里是我的代码:JAVAFX组合框为空

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

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

@FXML 
private Label label; 

我创建使用场景建设者FXid存储FXML文档中的组合框。

任何帮助,将不胜感激! 在此先感谢。

回答

0

当你用装饰的方式来装饰你的javafx组件时,你不应该启动它。只有这样才行;

@FXML ComboBox stores; 

在控制器类的初始化方法中。 添加以下代码:

stores.setItems(options); 
+0

完美地工作,非常感谢你! –

0

- >您的代码应该是这样的:

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(方法添加initialize()在FXML控制器,当这种方法被称为然后 你知道你的FXML组件已经初始化)

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

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

} 
+0

完美的作品,谢谢:) –