从ComboBox获取对象

时间:2013-07-02 16:21:19

标签: java javafx-2 javafx

这是我的问题。 我有一个名为FilteredComboBox的泛型类,它扩展了ComboBox。它基本上是一个可编辑的组合框,根据用户输入过滤选择。这个FilteredCombobox由Book类型的ObservableList提供,它只是一个带有2个字段,名称和id的简单类(显然它有getter,setter和toString)。

在用户做出选择并从下拉列表中点击他想要的书之后,我想通过名为getBookId的书类中的方法获取此书ID。不幸的是,当我说bookComboBox.getValue.getBookId时,我得到强制转换异常,因为getValue会自动调用toString方法。 有办法解决吗?我想让getValue()方法返回一个book类型的对象,并从那里调用我的getBookId()。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

对于像

这样的组合
ComboBox<Book> combobox = new ComboBox<>(your_book_list);

获取所选的书籍项目(例如,按钮动作事件)

Book selectedBook = combobox.getSelectionModel().getSelectedItem();
Integer id = selectedBook.getBookId();

答案 1 :(得分:0)

是的,它确实扩展了ComboBox 我解决了我的问题:

public T getChosenValue() {
int index = getSelectionModel().getSelectedIndex();
if(filter.size() != 0)
{
       System.out.println("filter size is not 0");
       return filter.get(index);
}
else
{
System.out.println("filter size is 0");
return items.get(index);
}
} 

由于我有2个可观察列表,项目和过滤我必须这样做,否则。效果很好,我会看看它在测试时是否给我任何错误。