2016-09-22 109 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

完美的作品,謝謝:) –