gpt4 book ai didi

Java Fx TreeTableView 不同的上下文菜单项

转载 作者:行者123 更新时间:2023-11-29 07:43:58 27 4
gpt4 key购买 nike

我正在使用 TreeTableView ,我想根据所选行中的数据更改与上下文菜单关联的菜单项。

假设我有一个结构如下的表:


访客


访客1

访客2

访客 3

喋喋不休


喋喋不休1

喋喋不休2


在此表中,我们可以比喻地说我们有两个根节点,分别是“访客”和“聊天者”。现在,我想要两个具有不同选项的上下文菜单。我们可以说访问者的上下文菜单有一个项目是“邀请聊天”和另一个处理聊天的上下文菜单,并有不同的选项,如:“踢”、“禁止”等。我的问题是如何实现这种情况?我应该在哪里使用这些上下文菜单?我应该将它们用于单元格、行还是表格?

最佳答案

使用自定义行工厂并在 updateItem(...) 方法中配置上下文菜单。

假设你有一个

TreeTableView<MyDataType> treeTable = ... ;

你会做类似的事情

treeTable.setRowFactory(ttv -> {
ContextMenu contextMenu = new ContextMenu();
MenuItem inviteMenuItem = new MenuItem("Invite to Chat");
// ...
MenuItem banMenuItem = new MenuItem("Ban");
// ...
TreeTableRow<MyDataType> row = new TreeTableRow<MyDataType>() {
@Override
public void updateItem(MyDataType item, boolean empty) {
super.updateItem(item, empty);
if (empty) {
setContextMenu(null);
} else {
// configure context menu with appropriate menu items,
// depending on value of item
setContextMenu(contextMenu);
}
}
};
inviteMenuItem.setOnAction(evt -> {
MyDataType item = row.getItem();
// do something with item...
});
// event handlers for other menu items...
return row ;
});

警告:这没有经过测试,因为您没有提供 MCVE供我测试,但它应该给你一般的想法。这将为用户点击的行显示相应的上下文菜单(使用上下文菜单的适当触发器,例如右键单击);这与选择的项目无关。

关于Java Fx TreeTableView 不同的上下文菜单项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27480403/

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