问题描述
我有一个 org.eclipse.jface.viewers.TreeViewer,每个项目有 2 列。
TreeViewer myTreeViewer = new TreeViewer(myComposite);
Tree myTree= myTreeViewer.getTree();
myTreeViewer.setContentProvider(new TreeContentProvider());
for (int i=0; i<2; i++) {
// initializing headers
}
for (int i=0; i<5; i++) {
TreeItem item = new TreeItem(myTree,SWT.NONE);
item.setData(new String[]{"Item " + i,i%2==0? "active" : "inactive"};
// of course,the item has children,but they are not relevant in this question
}
现在,我希望为每个项目添加一个用于右键单击的事件 - 打开一个带有文本“激活项目”的弹出菜单:
final Menu myMenu = new Menu(myTree);
myTree.setMenu(myMenu);
myMenu.addMenuListener(new MenuAdapter()
{
public void menuShown(MenuEvent e) {
MenuItem[] menuItems = myMenu.getItems();
for (int i = 0; i < menuItems.length; i++) {
menuItems[i].dispose();
}
TreeItem treeItem = myTree.getSelection()[0];
MenuItem newItem = new MenuItem(myMenu,SWT.NONE);
// Here I want to do some improvements
newItem.setText("Activate " + myTree.getSelection()[0].getText());
}
}
});
此时,如果我右键单击一个项目,它会打开一个带有文本“激活项目”的弹出菜单。 问题是如果我选择一个项目,它只选择第一个单元格(不是整行)。我想要做的是检查项目是“活动”还是“非活动”(树项目第 2 列的值)。如果它是“活动的”,我想设置文本“停用”。变量 myTree.getSelection()[0] 仅包含第 1 列中的文本。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)