如何从ComboBox返回Object

时间:2016-11-12 14:11:11

标签: mysql combobox javafx-2

我有一个从组合框中检索项目的问题...所以,主要的想法是我的对话框返回一个BookDetail对象,所以我可以将它插入到数据库中。在这个对话框中我有我的Category类的组合框 - 我希望它在BookDetail中返回我的构造函数一个Category对象,它是从combobox中选择的项目。 我已经在我的category_table中使用了组合框,但是我无法在BookDetail构造函数中实现所选的Category对象...这个块中有很多代码,所以我只会显示令人沮丧的块。

我想在那个构造函数中你现在可以看到“categoryBox1”来从combobox中选择Category对象。有人可以给我建议或示例如何正确地做到这一点?我找不到答案......

private void addBook() throws SQLException{
Dialog<BookDetail> dialog = new Dialog<>();

Label categoryLabel1 = new Label("Category: ");


dataCategories = FXCollections.observableArrayList(); // table with categories
ComboBox categoryBox1 = new ComboBox(categoryOptions);
categoryBox1.setMaxHeight(30);

String sql = "select * from tbl_category";
PreparedStatement pst = conn.prepareStatement(sql);
ResultSet rs = pst.executeQuery(sql);

while(rs.next()){
    dataCategories.add(new Category(rs.getInt(1),rs.getString(2)));
} 

categoryBox1.setItems(dataCategories);

dialog.setResultConverter(new Callback<ButtonType, BookDetail>(){
        @Override
        public BookDetail call(ButtonType b){
            if(b == buttonTypeAdd){

                return new BookDetail(isbnText.getText(),authorText.getText(),categoryBox1,
                        titleText.getText(),publisherText.getText(), dateOfPublicationText.getText(),
                        Integer.parseInt(ratingText.getText()),commentsText.getText());
            }
            return null;
        }
    }); 

}

1 个答案:

答案 0 :(得分:1)

您可以通过调用getValue()来获取ComboBox的选定(或用户编辑)值。

因此,在BookDetail构造函数中,不是通过categoryBox1引用传入ComboBox本身,而是从组合框中传入选定的值:

categoryBox1.getValue()