代码之家  ›  专栏  ›  技术社区  ›  durchstarter

使用带有HTMLEditorKit的JTextPane显示HTML图像

  •  2
  • durchstarter  · 技术社区  · 8 年前

    为了测试的目的,我尝试在文档的每一行旁边添加一个小图片,代码如下:

    kit.insertHTML(doc, doc.getLength(), "<IMG SRC=file://res/picture.png>", 0, 0, HTML.Tag.IMG);
    

    我的问题是,我看到的只是这个,没有图片,只是一个框架: enter image description here

    我可能走错了路,但据我所知,这应该是正确的: enter image description here

    这是我的方法的更多代码:

    public void addText(String text, boolean timestamp) {
    long timeMS = System.currentTimeMillis();
    Date instant = new Date(timeMS);
    SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
    String time = sdf.format(instant);
    
    boolean shouldScroll = false;
    
    try {
        HTMLDocument doc = (HTMLDocument) getChat().getDocument();
        HTMLEditorKit kit = (HTMLEditorKit) getChat().getEditorKit();
        JScrollBar vsb = getChatScroller().getVerticalScrollBar();
    
        BoundedRangeModel model = vsb.getModel();
        if (model.getExtent() + model.getValue() == model.getMaximum())
        shouldScroll = true;
        kit.insertHTML(doc, doc.getLength(), timestamp ? time + ": " + text : text, 0, 0, null);
        kit.insertHTML(doc, doc.getLength(), "<IMG SRC=file://res/picture.png>", 0, 0, HTML.Tag.IMG);
        if (shouldScroll)
        getChat().setCaretPosition(doc.getLength());
    } catch (IOException | BadLocationException e) {
        e.printStackTrace();
    }
    }
    

    有人知道为什么我只能看到照片的小框架,我忘了什么吗?提前谢谢!如果您需要更多代码,请告诉我!

    1 回复  |  直到 8 年前
        1
  •  2
  •   durchstarter    8 年前

    好的,我是这样做的:

        String filename = getClass().getClassLoader().getResource("res/Kappa.png").toString();
        String preTag="<PRE>filename is : "+filename+"</PRE>";
        String imageTag="<img src=\""+filename+"\"/>";
        kit.insertHTML(doc, doc.getLength(), preTag+imageTag, 0, 0, HTML.Tag.IMG);
    

    如果你有同样的问题,希望这能帮到你:)