2010-12-12 49 views
3

我们有一个Swing应用程序,我们计划移植到SWT/JFace。 Swing应用程序在树和表中绘制了很多图标(javax.swing.Icon实现)(图标留在文本左侧)。如果我理解正确,SWT只能绘制图片(又名图形文件)。绘制图标或整个表格/树形单元的最简单方法是什么?提前致谢。SWT:在表格或树形单元格中绘制“图标”

回答

3

图像可以从图形文件中加载,也可以在内存中绘制。

Image image = new Image(Display.getCurrent(), width, height); 
GC gc = new GC(image); 

// draw icon using GC 

gc.dispose(); 

至于在表/棵显示他们来说,最直接的方法是设置在表/树项目形象:

TableItem item = ... 
item.setImage(theImage); 

还有就是要然而,这种方法的一个显著的缺点:在Windows上,您第一次在表格项目上设置图像时,该图像的高度将成为表格中所有项目的标准高度。所以如果你设置一个更大的图像,它将被缩小到第一个图像的大小。如果你设置一个较小的图像,它将被放大。

如果您的所有图片都是相同的大小,这不会是一个问题。

但是,如果您无法预先预测图像的大小,我建议使用custom draw API来渲染您的表格/树项目。这种方法肯定是更加密集的,但可以对结果进行细化控制。

+0

谢谢。有没有一个地方可以在绘制节点之前立即按需设置图像? – Mot 2010-12-16 06:54:42

+1

您可以使用SWT.VIRTUAL表并使用SWT.SetData侦听器根据需要设置图像和文本。 – qualidafial 2010-12-16 20:46:58