当前位置: 首页 > 知识库问答 >
问题:

如何添加RTF格式的图标?

钮出野
2023-03-14

我正在开发SWT小部件,我有构建拖放功能。每当我拖动文件,它的下载链接应该被转移。

我使用以下代码做到了这一点。

现在我想要的是链接,我希望文件图标显示在链接旁边。例如,如果是word文档,则应显示word文件图标。

final DragSource dragSource = new DragSource(tv.getTree(), DND.DROP_MOVE | DND.DROP_COPY | DND.DragOver );
                dragSource.addDragListener(new DragSourceAdapter(){
                    @Override
                    public void dragFinished(DragSourceEvent event) {
                        dragSource.dispose();
                    }

                    @Override
                    public void dragSetData(DragSourceEvent event) {
                        final TreeItem[] dndSelection = tv.getTree().getSelection();
                        final String[] sourceNames = new String[dndSelection.length];
                        String docName = "document";
                        for (int i = 0; i < dndSelection.length; i++) {
                            final TreeItem item = (TreeItem) dndSelection[i];
                            final PendingTreeNode node = (PendingTreeNode) item
                                    .getData();
                            sourceNames[i] = node.getNodeId();
                            docName = node.getName();
                        }
                        final String filePath = AlfrescoFileUtil.getFileURL(sourceNames[0]);
                        final String viewDetailLink = AlfrescoFileUtil.getSearchFileURL(sourceNames[0]);
                        final String viewDetailsLabel = "View details";
                        StringBuffer finalS = new StringBuffer();
                        finalS.append("{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang1033{\\fonttbl{\\f0\\fnil\\fcharset0 Calibri;}}{\\colortbl ;\\red0\\green0\\blue255;}{\\*\\generator Msftedit 5.41.21.2509;}\\viewkind4\\uc1\\pard\\sa200\\sl276\\slmult1\\lang9\\f0\\fs22{\\field{\\*\\fldinst{HYPERLINK \"" + filePath + "\"}}{\\fldrslt{\\ul\\cf1 " + docName + "}}}");
                        finalS.append(" | ");
                        finalS.append("{\\field{\\*\\fldinst{HYPERLINK \"" + viewDetailLink + "\"}}{\\fldrslt{\\ul\\cf1 "+ viewDetailsLabel + "}}}}}");
                        event.data = finalS.toString();
                    }
                });
                dragSource.setTransfer(new Transfer[]{RTFTransfer.getInstance()});
                dragSource.notifyListeners(SWT.DragDetect, event);

我想展示类似于下面的内容。

但是它现在显示了这样的东西,没有图标

共有2个答案

李博达
2023-03-14

您是否尝试过使用事件。图像DragSourceEvent的属性?

    return new DragSourceListener() {
        @Override
        public void dragStart(DragSourceEvent event) {
            final Image image   =   xxx.getImage(); // get image
            if (image != null)
                event.image =   image;
            //else
            //  event.doit  =   false;
        }
        @Override
        public void dragSetData(DragSourceEvent event) {
            event.data      =   xxx.getData();      // set data
        }
        @Override
        public void dragFinished(DragSourceEvent event) {
            // On MOVE operations, data should be removed
        }
    };
武峻熙
2023-03-14

您可以使用SWTProgram类查找给定文件扩展名的程序图标

Program program = Program.findProgram("file extension");

ImageData imageData = program.getImageData();
 类似资料:
  • 好吧,我有gridview,它从服务器中提取图像

  • 问题内容: 我已经在Google和Stackoverflow上进行了搜索,但没有得到给出的示例。有人可以向我解释一下。 我想在表视图的最后一列中添加一个按钮,当单击它时,它应该触发一个侦听器并传递按钮行的对象。我只是没有从 gist.github.com 得到以下示例: 这是我目前的完整代码: 现在我必须创建的部分是可以理解的。但是如何将其分配给列? 我了解这一点: 但这不是: 问题答案: 为了能

  • 正如你在下面的代码片段中看到的,我很难让蓝色覆盖贴在图像上,但是正如你所看到的,在左侧,由于某种原因,它没有贴在图片上。是的,我希望一整列的位置比另一列低/高一点,所以这里我尝试将整列1定位70px,但它撕裂了蓝色覆盖层和图像。有什么想法吗? null null

  • 问题内容: 我仅使用1个数据插入json文件。 这就是我的json文件的外观。我只想在最后添加1个播放器。 我的问题是,如何在最后添加播放器?我也想知道如何更新 在匹配数组中。 问题答案: 只需解码json字符串,然后使用数组推送 对于你的情况 只需检查print_r($ arr);的值即可。我希望这就是你想要的。:)

  • 本文向大家介绍php实例分享之html转为rtf格式,包括了php实例分享之html转为rtf格式的使用技巧和注意事项,需要的朋友参考一下 核心代码: 可能遇到的问题 Fatal error: Class 'COM' not found in ××× 解决办法: ·将php_com_dotnet.dll复制到php根目录ext文件夹下 ·php.ini 确保有此语句 [PHP_COM_DOTNET