【问题标题】:Java element icons SWT ECLIPSEJava 元素图标 SWT ECLIPSE
【发布时间】:2013-04-02 00:24:28
【问题描述】:

如何在 SWT 的 Tree 控件中添加 java 元素图标(如包资源管理器中的类、方法、包等)?

例如,我有以下树结构: 一些包

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

这里--> 代表折叠图标。我想保持这个完整,但另外我想为相应的 java 元素设置适当的图标(因为它在包资源管理器中可见)。我正在使用 SWT Tree 来构建树视图。以下是构造它的代码:

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);

【问题讨论】:

    标签: java eclipse swt


    【解决方案1】:

    您可以将依赖项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
    

    编辑:
    如果您不想仅仅因为想使用一些 Eclipse 图像而包含所有库: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

      【讨论】:

        猜你喜欢
        • 2012-11-17
        • 1970-01-01
        • 1970-01-01
        • 2013-12-25
        • 2010-10-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多