java—从具有多列的treeitem中获取整行作为字符串数组

6tr1vspr  于 2021-06-26  发布在  Java
关注(0)|答案(0)|浏览(175)

我有一个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中的文本。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题