我有一个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
}
现在,我想为每个项目添加一个右键单击事件-打开一个带有文本“activate item”的弹出菜单:
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());
}
}
});
在这一刻,如果我在一个项目上做了一个右键单击,它会打开一个弹出菜单,文本“激活项目”。问题是,如果我选择了一个项目,它只会选择第一个单元格(而不是整行)。我想做的是检查项目是“active”还是“inactive”(tree item的第2列的值)。如果它是“active”,我想设置文本“deactivate”。变量mytree.getselection()[0]仅包含列1中的文本。
暂无答案!
目前还没有任何答案,快来回答吧!