SWT树多个图标
SWT tree multiple icons
我正在尝试通过将更多图像附加到一个长图像中然后为每个树节点添加它来为 swt 树添加多个图标。问题是随着图像宽度的增加,虚线越来越长(见图)。我尝试添加绘画侦听器,但我遇到了一些重绘问题,因此绘画侦听器对我不起作用。
如果有人有任何建议,请帮助。
switch (event.type) {
case SWT.MeasureItem: {
final Object value = ((TreeItem) event.item).getData();
final BrowserNode node = getBrowserNode(value);
Image image = getCombinedImage(node.getImage1(),node.getImage2(),node.getImage3(),node.getImage4());
Rectangle rect = image.getBounds();
event.width += rect.width;// rect.width*2;
event.height = Math.max(event.height, rect.height + 2);
break;
}
case SWT.PaintItem: {
BrowserNode node = getBrowserNode(((TreeItem) event.item).getData());
Image image = getCombinedImage(node.getImage1(),node.getImage2(),node.getImage3(),node.getImage4());
Rectangle rect = image.getBounds();
int offset = Math.max(0, (event.height - rect.height) / 2);
event.gc.copyArea(event.x, event.y, event.width, event.height, event.x + image.getImageData().width-30, event.y + offset, false);
event.gc.fillRectangle(event.x, event.y, image.getImageData().width, event.height);
event.gc.drawImage(image, event.x, event.y + offset);
break;
}
}
树节点过度缩进是 Windows 特有的,其他平台没有这种行为。
此错误报告中讨论了此问题:
https://bugs.eclipse.org/bugs/show_bug.cgi?id=185004
建议的解决方法是自己绘制树项。
我正在尝试通过将更多图像附加到一个长图像中然后为每个树节点添加它来为 swt 树添加多个图标。问题是随着图像宽度的增加,虚线越来越长(见图)。我尝试添加绘画侦听器,但我遇到了一些重绘问题,因此绘画侦听器对我不起作用。 如果有人有任何建议,请帮助。
switch (event.type) {
case SWT.MeasureItem: {
final Object value = ((TreeItem) event.item).getData();
final BrowserNode node = getBrowserNode(value);
Image image = getCombinedImage(node.getImage1(),node.getImage2(),node.getImage3(),node.getImage4());
Rectangle rect = image.getBounds();
event.width += rect.width;// rect.width*2;
event.height = Math.max(event.height, rect.height + 2);
break;
}
case SWT.PaintItem: {
BrowserNode node = getBrowserNode(((TreeItem) event.item).getData());
Image image = getCombinedImage(node.getImage1(),node.getImage2(),node.getImage3(),node.getImage4());
Rectangle rect = image.getBounds();
int offset = Math.max(0, (event.height - rect.height) / 2);
event.gc.copyArea(event.x, event.y, event.width, event.height, event.x + image.getImageData().width-30, event.y + offset, false);
event.gc.fillRectangle(event.x, event.y, image.getImageData().width, event.height);
event.gc.drawImage(image, event.x, event.y + offset);
break;
}
}
树节点过度缩进是 Windows 特有的,其他平台没有这种行为。
此错误报告中讨论了此问题: https://bugs.eclipse.org/bugs/show_bug.cgi?id=185004
建议的解决方法是自己绘制树项。