我有一个通过这种方式创建的 JEditorPane:
JEditorPane pane = new JEditorPane("text/html", "<font face='Arial'>" + my_text_to_show + "<img src='/root/img.gif'/>" + "</font>");
我把这个窗格放在一个 JFrame 上。
文字显示正确,但看不到图片,只有一个方块表示应该有图片(即:未找到图片时浏览器显示的“破损图片”)
我有一个通过这种方式创建的 JEditorPane:
JEditorPane pane = new JEditorPane("text/html", "<font face='Arial'>" + my_text_to_show + "<img src='/root/img.gif'/>" + "</font>");
我把这个窗格放在一个 JFrame 上。
文字显示正确,但看不到图片,只有一个方块表示应该有图片(即:未找到图片时浏览器显示的“破损图片”)
您必须提供类型并获取资源。就这样。我测试过的例子,但我不确定格式化。希望能帮助到你:
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);
}
}
JEditorPane 也使用 HTMLDocument.getBase 来定位相对 url,因此如果您正在显示目录中的内容,请确保在 html 文档上设置基础,以便它解析相对于基础目录的 url。
根据该图像的实际位置,您可能希望扩展 HTMLEditorKit+HTMLFactory+ImageView 并提供 ImageView 的自定义实现,该实现也负责将属性 URL 映射到图像 URL。
以上都对我不起作用,但是 'imgsrc = new File("passport.jpg").toURL().toExternalForm();'
让我尝试让 html 中的每个图像都有一个前面的“文件:”,以便它现在显示为:
<img src="file:passport.jpg" />
这对我来说很好。
如果要指定图像的相对路径。
假设您的项目文件夹结构如下:
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'>"
耶!
我在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 运行,则图像文件必须在同一目录级别,...实际上,图像文件必须与您的执行条目在同一目录中。