如何解决从具有多列的 TreeItem 中获取整行作为字符串数组
我有一个 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 举报,一经查实,本站将立刻删除。