3
我们有一个Swing应用程序,我们计划移植到SWT/JFace。 Swing应用程序在树和表中绘制了很多图标(javax.swing.Icon
实现)(图标留在文本左侧)。如果我理解正确,SWT只能绘制图片(又名图形文件)。绘制图标或整个表格/树形单元的最简单方法是什么?提前致谢。SWT:在表格或树形单元格中绘制“图标”
我们有一个Swing应用程序,我们计划移植到SWT/JFace。 Swing应用程序在树和表中绘制了很多图标(javax.swing.Icon
实现)(图标留在文本左侧)。如果我理解正确,SWT只能绘制图片(又名图形文件)。绘制图标或整个表格/树形单元的最简单方法是什么?提前致谢。SWT:在表格或树形单元格中绘制“图标”
图像可以从图形文件中加载,也可以在内存中绘制。
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来渲染您的表格/树项目。这种方法肯定是更加密集的,但可以对结果进行细化控制。
谢谢。有没有一个地方可以在绘制节点之前立即按需设置图像? – Mot 2010-12-16 06:54:42
您可以使用SWT.VIRTUAL表并使用SWT.SetData侦听器根据需要设置图像和文本。 – qualidafial 2010-12-16 20:46:58