2013-08-23 19 views

Odpowiedz

14

Po prostu użyj tree.setMenu(Menu).

Nie idziesz:

public static void main(String[] args) 
{ 
    Display display = Display.getDefault(); 
    final Shell shell = new Shell(display); 
    shell.setText("StackOverflow"); 
    shell.setLayout(new FillLayout()); 

    final Tree tree = new Tree(shell, SWT.NONE); 

    for(int i = 0; i < 10; i++) 
    { 
     TreeItem item = new TreeItem(tree, SWT.NONE); 
     item.setText("Parent " + i); 

     for(int j = 0; j < 3; j++) 
     { 
      TreeItem child = new TreeItem(item, SWT.NONE); 
      child.setText("Child " + i + " " + j); 
     } 
    } 

    final Menu menu = new Menu(tree); 
    tree.setMenu(menu); 
    menu.addMenuListener(new MenuAdapter() 
    { 
     public void menuShown(MenuEvent e) 
     { 
      MenuItem[] items = menu.getItems(); 
      for (int i = 0; i < items.length; i++) 
      { 
       items[i].dispose(); 
      } 
      MenuItem newItem = new MenuItem(menu, SWT.NONE); 
      newItem.setText("Menu for " + tree.getSelection()[0].getText()); 
     } 
    }); 

    shell.pack(); 
    shell.open(); 
    while (!shell.isDisposed()) 
    { 
     if (!display.readAndDispatch()) 
      display.sleep(); 
    } 
    display.dispose(); 
} 
+1

to działa! Dzięki za tonę! – user2598071

+0

@ user2598071 Nie ma za co. – Baz

+0

Czy istnieje sposób blokowania wyświetlania menu tylko dla pierwszego poziomu drzewa? Na przykład, aby wyświetlać tylko root. – Justplayit94