在jeditorpane上显示图像(java swing)

时间:2009-02-21 13:58:54

标签: java image swing jeditorpane

我有一个以这种方式创建的JEditorPane:

JEditorPane pane = new JEditorPane("text/html", "<font face='Arial'>" + my_text_to_show + "<img src='/root/img.gif'/>" + "</font>");

我将此窗格放在JFrame上。

文字显示正确,但我看不到图片,只有一个正方形表示应该有一张图片(即:图片未找到时浏览器显示的“破碎图片”)

5 个答案:

答案 0 :(得分:8)

您必须提供类型,并获取资源。就这样。我测试的例子,但我不确定格式化。希望它有所帮助:

import java.io.IOException;
import javax.swing.JEditorPane;
import javax.swing.JFrame;

public class Test extends JFrame {

    public static void main(String[] args) throws Exception {
        Test.createAndShowGUI();
    }

    private static void createAndShowGUI() throws IOException {

        JFrame.setDefaultLookAndFeelDecorated(true); 

        JFrame frame = new JFrame("HelloWorldSwing");

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        String imgsrc = 
            Test.class.getClassLoader().getSystemResource("a.jpg").toString();
        frame.getContentPane().add(new JEditorPane("text/html",
            "<html><img src='"+imgsrc+"' width=200height=200></img>"));
        frame.pack();

        frame.setVisible(true);
    }
}

答案 1 :(得分:4)

JEditorPane也使用HTMLDocument.getBase来定位相对URL,因此如果要显示目录中的内容,请确保在html文档上设置基础,以便它相对于基本目录解析URL。

根据图像的实际位置,您可能需要扩展HTMLEditorKit + HTMLFactory + ImageView并提供ImageView的自定义实现,ImageView也负责将属性URL映射到图像URL。

答案 2 :(得分:3)

以上都没有为我工作,但是'imgsrc = new File("passport.jpg").toURL().toExternalForm();'让我尝试让html中的每个图像都有一个前面的'file:',现在它显示为:

<img src="file:passport.jpg" />

这对我来说很好。

答案 3 :(得分:1)

如果要指定图像的相对路径。

假设您的项目文件夹结构如下:

sample_project/images
sample_project/images/loading.gif
sample_project/src
sampler_project/src/package_name

现在图片标签看起来像这样:
"<img src='file:images/loading.gif' width='100' height='100'>"

Yaay!

答案 4 :(得分:0)

当我在netbeans工作时,我使用了它,但它工作正常。如果程序应该在netbeans之外运行,我认为稍加修改,

String imgsrc="";
try {
    imgsrc = new File("passport.jpg").toURL().toExternalForm();
} catch (MalformedURLException ex) {
   Logger.getLogger(EntityManager.class.getName()).log(Level.SEVERE, null, ex);
}
//System.out.println(imgsrc); use this to check
 html = "<img src='" + imgsrc + "' alt='' name='passport' width='74' height='85' /><br />";
//use the html ...   

如果你从jar运行,图像文件必须在同一目录级别,... 实际上,映像文件必须与执行条目位于同一目录中。