2013-04-10 50 views
0

如何在SWT的Tree控件中添加java元素圖標(例如,類包,方法,包等)Java元素圖標SWT ECLIPSE

e.g,我有以下的樹結構: somePackage

--> somePackage 
     | 
     |--> someClass 
       | 
       |--> someMethod 

這裏-->表示摺疊圖標。我想保持這個完整的,但另外我想有相應的Java元素的適當的圖標(因爲它是在包資源管理器中可見)。我正在使用SWT樹來構建樹視圖。以下是代碼來構建它:

final Tree tree = new Tree (composite, SWT.BORDER); 
    for (int i=0; i<4; i++) { 
        // Package 
     TreeItem iItem = new TreeItem (tree, 0); 
     iItem.setText ("TreeItem (0) -" + i); 
     for (int j=0; j<4; j++) { 
          // Class 
      TreeItem jItem = new TreeItem (iItem, 0); 
      jItem.setText ("TreeItem (1) -" + j); 
      for (int k=0; k<4; k++) { 
            // Method or Fields 
       TreeItem kItem = new TreeItem (jItem, 0); 
       kItem.setText ("TreeItem (2) -" + k); 
      } 
     } 
    } 
    tree.setBounds(25, 50, 580, 200); 

回答

3

您可以將依賴項org.eclipse.jdt.ui添加到您的項目中,以訪問JDT項目的共享圖像。以下代碼適用於Eclipse 3.x.對於簡單的SWT應用程序(無需Eclipse插件),您需要添加一堆eclipse插件(包括org.eclipse.jdt.ui)以在您的項目中獲得此功能。

import org.eclipse.jdt.ui.ISharedImages; 
import org.eclipse.jdt.ui.JavaUI; 
... 

ISharedImages images = (ISharedImages) JavaUI.getSharedImages(); 
Image image = images.getImage(ISharedImages.IMG_OBJS_CLASS); // class file icon 

enter image description here

編輯:
如果你不想包括所有的庫只是因爲你想使用一些日食圖片:I found a list of all eclipse shared images in the web。 (基於Eclipse 3.4)

來源:
interface org.eclipse.jdt.ui.ISharedImages

2

TreeItem.setImage(Image)你想要什麼?

public static void main(String[] a) 
{ 
    Display display = new Display(); 
    Shell shell = new Shell(display); 

    shell.setText("StackOverflow"); 
    shell.setLayout(new FillLayout()); 
    Tree tree = new Tree(shell, SWT.SINGLE | SWT.BORDER); 
    TreeItem child1 = new TreeItem(tree, SWT.NONE); 
    child1.setText("1"); 
    child1.setImage(display.getSystemImage(SWT.ICON_INFORMATION)); 

    TreeItem child11 = new TreeItem(child1, SWT.NONE); 
    child11.setText("1_1"); 

    TreeItem child2 = new TreeItem(tree, SWT.NONE); 
    child2.setText("2"); 
    child2.setImage(display.getSystemImage(SWT.ICON_ERROR)); 

    TreeItem child22 = new TreeItem(child2, SWT.NONE); 
    child22.setText("2_2"); 

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

如果你只是尋找Eclipse的圖標,你可以找到他們here