swing Java窗口窗格不显示图像
我无法使用JEditorPane将HTML img标记呈现为图像。所有显示的都是占位符图形。下面是我的代码。提前谢谢
我看到:
我的代码:
import java.awt.*;
import java.io.File;
import java.net.URL;
import java.util.Hashtable;
import javax.swing.*;
import javax.swing.text.html.HTMLEditorKit;
public class test
{
private static Hashtable image_cache;
public static void main(String[] args)
{
image_cache = new Hashtable();
URL img_url = null;
try
{
img_url = new File("C:/img/mypic.png").toURI().toURL();
Image img = Toolkit.getDefaultToolkit ().createImage (img_url);
image_cache.put(img_url.toURI(), img);
}
catch (Exception e)
{
e.printStackTrace();
}
String html = "<html>" +
"<body>"+
"<img src=\"" + img_url.toString() + "\">" +
"</body>" +
"</html>";
JEditorPane swingbox = new JEditorPane();
swingbox.setEditorKit(new HTMLEditorKit());
swingbox.setContentType("text/html");
swingbox.setText(html);
swingbox.getDocument().putProperty("imageCache", image_cache);
JFrame frame=new JFrame("Example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(swingbox);
frame.setSize(800,600);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}
# 1 楼答案
问题在于您的代码在:
注释掉这一行,它应该可以正常工作。经过一番挖掘,我发现问题出在图像缓存上。放置(img_url.toURI(),img)。它应该是图像缓存。put(img_url,img)
自定义图像缓存可能会帮助您以后调试代码。下面是一个例子,其中有一些变化对我来说很有用。创建一个ImageCache类,使其在调用get时,如果找到,则从缓存返回图像;如果没有找到,则将图像放入缓存并返回
示例代码: