【问题标题】:JAVAFX ComboBox is blankJAVAFX 组合框为空
【发布时间】:2017-01-30 09:39:52
【问题描述】:

我对编程很陌生,似乎无法克服这个问题。我想要一个包含选项并且立即出现的选择框。我尝试定义 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 文档中创建了组合框。

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

【问题讨论】:

    标签: java combobox fxml


    【解决方案1】:

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

     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); 
    
     }
    

    【讨论】:

      【解决方案2】:

      当你用注解装饰你的 javafx 组件时,你不应该启动它。只有这样才可以;

       @FXML ComboBox stores;
      

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

      stores.setItems(options);
      

      【讨论】:

        猜你喜欢
        • 2017-02-08
        • 1970-01-01
        • 2019-08-23
        • 2015-03-06
        • 1970-01-01
        • 1970-01-01
        • 2013-10-01
        • 2020-03-17
        • 2016-10-28
        相关资源
        最近更新 更多