Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在ColumnLabelProvider的文本之后和之前添加图像_Java_Swt_Jface - Fatal编程技术网

Java 如何在ColumnLabelProvider的文本之后和之前添加图像

Java 如何在ColumnLabelProvider的文本之后和之前添加图像,java,swt,jface,Java,Swt,Jface,我尝试过扩展ColumnLabelProvider,并将下面的代码用于复选框树查看器 getTree().addListener(SWT.PaintItem, new Listener() { @Override public void handleEvent(Event event) { TreeItem treeItem = (TreeItem) event.item; Confi

我尝试过扩展ColumnLabelProvider,并将下面的代码用于复选框树查看器

getTree().addListener(SWT.PaintItem, new Listener() {
            @Override
            public void handleEvent(Event event) {
                TreeItem treeItem = (TreeItem) event.item;
                ConfigTreeViewNode item = (ConfigTreeViewNode) treeItem.getData();
                if (!(item instanceof ConfigTreeViewNodeConfig)) {
                    return;
                }
                ConfigTreeViewNodeConfig configNode = (ConfigTreeViewNodeConfig) item;
                if (configNode.getValidationMessage() == null) {
                    return; // not evaluated yet
                }

                ConfigTreeViewLabelProvider labelProvider = (ConfigTreeViewLabelProvider) getLabelProvider();
                Image image = labelProvider.getConversionValidationStateImage(configNode.getValidationMessage());
                int x = event.x + event.width + 2; // give small margin
                int itemHeight = getTree().getItemHeight();
                int imageHeight = image.getBounds().height;
                int y = event.y + (itemHeight - imageHeight) / 2;
                event.gc.drawImage(image, x, y);

            }
        });
在此之后,我可以看到ImageICON LabelText ImageICON,如下所示


但当我将鼠标移到节点上时,只会突出显示第一个图像和文本,工具提示也会出现。我还想突出显示第三幅图像,并想像其他选择一样带来工具提示。

您使用的是JFace
TableViewer
还是普通SWT
Tree
?嗨,鲁迪格,我使用的是org.eclipse.JFace.viewers.checkboxTreeViewer。您的绘制代码很可能会干扰JFace
LabelProvider
代码。经验法则:当小部件由JFace查看器提供时,不要弄乱它。您应该改用
OwnerDrawLabelProvider
。你好,鲁迪格,感谢您的输入,我尝试了OwnerDrawLabelProvider,我可以添加图像和文本。。但在鼠标上的图像和文本不是高亮度的,而且在我第一次选择后,我得到了一个蓝色的高亮度行。我在这里遗漏了什么吗?蓝色背景是带有
SWT的线的默认处理。由所有者绘制
擦除
方法选择。你可以覆盖这个。