如何在SWT的Tree控件中添加java元素图标(例如,包中的类,方法,包等)?
例如,我有以下树结构: somePackage
--> 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);
答案 0 :(得分: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
修改强>
如果您不想仅包含所有库,因为您想使用一些eclipse图像:I found a list of all eclipse shared images in the web。 (基于eclipse 3.4)
答案 1 :(得分: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。