0

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

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

有任何想法吗?

4

2 回答 2

1

对于像这样的组合

ComboBox<Book> combobox = new ComboBox<>(your_book_list);

在事件中获取选定的书籍项目(例如在按钮操作事件上)

Book selectedBook = combobox.getSelectionModel().getSelectedItem();
Integer id = selectedBook.getBookId();
于 2013-07-02T16:36:14.343 回答
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 个可观察的列表、项目和过滤器,所以我必须这样做,否则。效果很好,我会在测试时看看它是否没有给我任何错误。

于 2013-07-02T18:36:54.143 回答