JavaFX:一行填充了一个条目后的ContextMenu?

我正在使用此链接为每个表行创建ContextMenu。 现在我遇到了问题因为我不确定在将’type’插入行之后如何附加ContextMenu。

假设我正在使用.zip编辑器程序,它会列出内容。 我有一个Image,一个文本文件,以及其他一些东西,所有这些东西都在一个名为Entry的类下面。 我的表的generics类型是’Entry’,我希望能够根据它的底层子类类型为每个条目创建一个上下文菜单(就像ImageEntry可能返回一个菜单项在图像编辑器中打开它)。 。等等)。

现在我有一个通用的上下文菜单,但是显示一个关于用图像编辑器打开文本文件的菜单项并不是很好…

这可能吗? 如果是这样,那么正确的做法是什么?

向行的itemProperty (表示行中显示的项)添加一个侦听器,并在更改时更新上下文菜单:

  table.setRowFactory(new Callback, TableRow>() { @Override public TableRow call(TableView tableView) { final TableRow row = new TableRow<>(); final ContextMenu contextMenu = new ContextMenu(); row.itemProperty().addListener((obs, oldPerson, newPerson) -> { contextMenu.getItems().clear(); // add items to context menu depending on value of newPerson // ... }); // Set context menu on row, but use a binding to make it only show for non-empty rows: row.contextMenuProperty().bind( Bindings.when(row.emptyProperty()) .then((ContextMenu)null) .otherwise(contextMenu) ); return row ; } });