2016-11-12 116 views
1

我有一個從組合框中取回項目的問題...所以,主要想法是我的對話框返回一個BookDetail對象,以便將其插入到數據庫中。在這個對話框中,我有我的Category類的組合框 - 我期望它返回到我的構造函數BookDetail一個類別對象,它是從組合框中選擇的項目。 我已經從我的category_table組合框的值,但我不能實現選定的類別對象到BookDetail的構造函數...有很多代碼在這個塊,所以我只會顯示挫敗塊。如何從組合框返回對象

我想在該構造函數中,您現在可以看到「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

你可以得到的選擇(或用戶編輯)組合框的值通過調用getValue()我無法找到答案......。

因此,在你BookDetail構造函數,而不是通過categoryBox1參考在ComboBox本身傳球,而不是隻在選定的值傳遞從下拉列表框:

categoryBox1.getValue() 
+0

沒錯,就是它! :) –