有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在jface tableviewer中显示多个图像

我需要在JFace tableviewer的一列中显示最多4个图像。使用labelprovider,我只能显示单个图像

我有四个16x16图像,根据不同的条件,我想显示1或2或3或4个图像。有什么想法吗

到现在为止,我已经做到了

    private CellLabelProvider getLabelProvider(String id) {
        CellLabelProvider labelProvider = null;
         if(id.equals("PROPERTIES")){
            labelProvider = new ColumnLabelProvider() {

                @Override
            public String getText(Object element) {
                        return null;
                    }

             @Override
            public Image getImage(Object element) {
                 RouteType route=(RouteType) element;
                 if(cond1) return Image1;
                 if (cond2) return Image2;
                             if(cond3) return Image3;
                             if(cond4) return Image4;


                 return null;
            }

            };
            }

}

如果cond1、cond2、cond3和cond4为真,我想返回所有四个图像Image1、Image2、Image3和Image4


共 (2) 个答案

  1. # 1 楼答案

    动态创建一个合成图像可能是另一个解决方案,如果你想坚持你的标签供应商。我很想和大家分享,虽然我没试过

    // inside your getImage method // say you have three images to show Image compositeImg = new Image(Display.getCurrent(), 48, 16); GC gc = new GC(compositeImg); gc.drawImage(img1, 0, 0); gc.drawImage(img2, 16, 0); gc.drawImage(img3, 32, 0); gc.dispose(); return compositeImg;

    img1img2img3是以前创建的Image实例,大小为16x16像素。您可以轻松地将它们组织到您的算法中,以正确地创建组合

    你可以选择一张16x4的固定宽度的组合表

  2. # 2 楼答案

    正如您所见,标签提供程序只支持一个图像

    您可能可以使用从org.eclipse.jface.resource.CompositeImageDescriptor派生的类将多个图像合并到一个图像中。我不确定这张桌子能不能很好地处理不同宽度的图像

    如果这不起作用,您可以使用从org.eclipse.jface.viewers.OwnerDrawLabelProvider派生的标签提供程序。此标签提供程序可让您完全控制表格单元格的绘制,但需要一些SWT GC绘制操作的经验