7

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

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

我把这个窗格放在一个 JFrame 上。

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

4

5 回答 5

9

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

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);
    }
}
于 2009-02-21T15:28:33.560 回答
4

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

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

于 2009-02-21T21:42:58.777 回答
3

以上都对我不起作用,但是 'imgsrc = new File("passport.jpg").toURL().toExternalForm();' 让我尝试让 html 中的每个图像都有一个前面的“文件:”,以便它现在显示为:

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

这对我来说很好。

于 2012-04-10T06:58:00.640 回答
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'>"

耶!

于 2013-11-30T14:39:00.390 回答
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 运行,则图像文件必须在同一目录级别,...实际上,图像文件必须与您的执行条目在同一目录中。

于 2011-08-15T10:50:28.920 回答