Java 带有嵌入式ListView的TableView

Java 带有嵌入式ListView的TableView,java,listview,user-interface,javafx,java-8,Java,Listview,User Interface,Javafx,Java 8,我试图用嵌入的ListView创建一个TableView,但我不确定该怎么做,我一直在研究如何将按钮嵌入TableColumn,我发现我应该创建一个自定义类来扩展TableColumn并覆盖updateItem。 我有一个: @FXML private TableColumn<FoodModel, ObservableSet<Food>> storeFood; 好的,您的代码片段不包含任何填充列表的尝试,所以问题是为什么您希望填充列表。@Holger不是setCellV

我试图用嵌入的ListView创建一个TableView,但我不确定该怎么做,我一直在研究如何将按钮嵌入TableColumn,我发现我应该创建一个自定义类来扩展TableColumn并覆盖updateItem。 我有一个:

@FXML
private TableColumn<FoodModel, ObservableSet<Food>> storeFood;

好的,您的代码片段不包含任何填充列表的尝试,所以问题是为什么您希望填充列表。@Holger不是setCellValueFactory,它引用了ObservableSet来设置值?当然。它通过委托给单元格的updateItem方法来实现。由于您是实现单元格的人,因此您必须填充您创建的ListView。最后,JavaFX必须知道如何从一个单元格的单个项目进入您想要查看的填充列表视图,并编写代码,这是告诉软件系统如何操作的典型方式。@Holger噢!现在有道理了!我在updateItem中添加了一个add调用,它可以正常工作!
private static final class ListViewCell<T, V> extends TableCell<T, V> {

    private ListView<T> list;

    ListViewCell() {
        this.list = new ListView<>();
        this.list.setPrefHeight(60);
    }

    @Override
    protected void updateItem(V item, boolean empty) {
        super.updateItem(item, empty);
        if (!empty) {
            setContentDisplay(ContentDisplay.GRAPHIC_ONLY);
            setGraphic(this.list);
        }
    }

}