2017-06-05 51 views
1

我已經嘗試了一切,找出爲什麼我的組合框不會填充,但沒有任何作品。Java組合框將不會被填充

在我的FXML文件中。

<ComboBox fx:id="comboBox" layoutX="162.0" layoutY="15.0" prefHeight="25.0" prefWidth="334.0" promptText="Select past popular pizza" /> 

在我的控制,我有以下

public class ServeController { 
public ObservableList<String> pizzas1 = FXCollections.observableArrayList(); 
@FXML public ComboBox<String> comboBox; 
private void initialize() { 
comboBox.getItems().addAll(
     "[email protected]", 
     "[email protected]", 
     "[email protected]", 
     "[email protected]", 
     "[email protected]" 
    ); 
} 

我甚至有

public ObservableList<String> pizzas1 = FXCollections.observableArrayList("1","2","3","4"); 

試圖嘗試得到一些數據的展現出來,但似乎沒有奏效。

+0

您是否在FXML中指定您的控制器(通過fx:controller屬性)? –

+0

是的,我這樣做 Dan

+0

在'private void initialize()' – c0der

回答

2

我假設你正在以「標準」方式使生命控制器起作用。我在想,private void initialize()方法永遠不會被調用。您的ServeController不實現Initializable接口。正確的代碼應該如下:

public class ServeController implements Initializable { 

    public ObservableList<String> pizzas1 = FXCollections.observableArrayList(); 

    @FXML 
    public ComboBox<String> comboBox; 

    @Override 
    public void initialize(URL url, ResourceBundle rb) { 
     comboBox.getItems().addAll(
       "[email protected]", 
       "[email protected]", 
       "[email protected]", 
       "[email protected]", 
       "[email protected]" 
     ); 
    } 
} 
+0

之前添加'@ FXML'實現'Initializable'不是必需的。唯一的問題是除了'public'以外的所有成員對'FXMLLoader'都是不可見的,除非它們用'@ FXML'註解。 ([請參閱c0der的答案](https://stackoverflow.com/a/44364430/2991525)) – fabian

2

我認爲如果你添加打印輸出initialize()你會看到,它是不被調用。
要獲得initialize()引用,您需要註釋它:@FXML private void initialize()