gpt4 book ai didi

java - 一行 TableView 上的上下文菜单?

转载 作者:搜寻专家 更新时间:2023-10-30 21:15:05 27 4
gpt4 key购买 nike

我正在使用 JavaFX,我的应用程序有一个表,我可以向该表添加元素,但我想创建一个上下文菜单,当我右键单击该行时,它会显示在该行上。

我有什么...

在 Scene Builder 中,我有一个在激活上下文菜单时运行的方法,但这并不是我想要的。这真的很好,因为我可以随时以编程方式从表中获取所选项目。如果我保留当前拥有的内容,问题是让上下文菜单在所选元素处弹出。

contextMenu 是带有菜单项的上下文菜单。connectedUsers 是 TableView

以下是我能得到的最接近的,但这显示了 TableView 底部的上下文菜单

contextMenu.show(connectedUsers, Side.BOTTOM, 0, 0);

最佳答案

我相信最好的解决方案是在 here 中讨论的.

table.setRowFactory(
new Callback<TableView<Person>, TableRow<Person>>() {
@Override
public TableRow<Person> call(TableView<Person> tableView) {
final TableRow<Person> row = new TableRow<>();
final ContextMenu rowMenu = new ContextMenu();
MenuItem editItem = new MenuItem("Edit");
editItem.setOnAction(...);
MenuItem removeItem = new MenuItem("Delete");
removeItem.setOnAction(new EventHandler<ActionEvent>() {

@Override
public void handle(ActionEvent event) {
table.getItems().remove(row.getItem());
}
});
rowMenu.getItems().addAll(editItem, removeItem);

// only display context menu for non-empty rows:
row.contextMenuProperty().bind(
Bindings.when(row.emptyProperty())
.then((ContextMenu) null)
.otherwise(rowMenu);
return row;
}
});

关于java - 一行 TableView 上的上下文菜单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21009377/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com