2016-11-12 2 views
1

У меня проблема с возвратом элемента из combobox ... Итак, основная идея заключается в том, что мой диалог возвращает объект BookDetail, поэтому я могу вставить его в базу данных. В этом диалоговом окне у меня есть combobox для моего класса Category - я ожидаю, что он вернется к моему конструктору в BookDetail объекту Category, который выбран элементом из combobox. У меня уже есть значения из моей category_table в combobox, но я не могу реализовать выбранный объект Category в конструкторе BookDetail ... в этом блоке много кода, поэтому я покажу только усеченный блок.Как вернуть объект из ComboBox

Я хочу, чтобы в этом конструкторе, где теперь вы можете увидеть «categoryBox1», чтобы поместить туда объект категории из combobox. Может ли кто-нибудь дать мне совет или пример, как правильно это сделать? Я не могу найти ответ ...

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

Вы можете получить выбранный (отредактированный или пользователем) значение ComboBox, вызвав getValue().

Таким образом, в вашем BookDetail конструктору, вместо передачи в самой ComboBox через categoryBox1 ссылки, вместо того, чтобы просто передать выбранное значение из выпадающего списка:

categoryBox1.getValue() 
+0

Да, это так! :) –

Смежные вопросы