从具有多列的 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 (将#修改为@)