具有内嵌图像的JEditorPane

具有内嵌图像的JEditorPane,第1张

具有内嵌图像的JEditorPane

您需要为“数据:”添加协议处理程序,以便可以为其打开URL / URLConnection。或者,您可以为类路径资源创建一些协议处理程序“
resource:”。

您需要一个

data
带有类的包
Handler
(固定名称约定!)。这将是“数据:”的工厂类,返回URLConnection。我们将为此创建DataConnection。

可以通过System.setProperty完成协议处理程序的安装。在这里,我提供了

Handler.install();
以一般方式进行的 *** 作。

package test1.data;import java.io.IOException;import java.net.URL;import java.net.URLConnection;import java.net.URLStreamHandler;public class Handler extends URLStreamHandler {    @Override    protected URLConnection openConnection(URL u) throws IOException {        return new DataConnection(u);    }    public static void install() {        String pkgName = Handler.class.getPackage().getName();        String pkg = pkgName.substring(0, pkgName.lastIndexOf('.'));        String protocolHandlers = System.getProperty("java.protocol.handler.pkgs", "");        if (!protocolHandlers.contains(pkg)) { if (!protocolHandlers.isEmpty()) {     protocolHandlers += "|"; } protocolHandlers += pkg; System.setProperty("java.protocol.handler.pkgs", protocolHandlers);        }    }}

URLConnection为字节提供InputStream:

package test1.data;import java.io.ByteArrayInputStream;import java.io.IOException;import java.io.InputStream;import java.net.URL;import java.net.URLConnection;import javax.xml.bind.DatatypeConverter;public class DataConnection extends URLConnection {    public DataConnection(URL u) {        super(u);    }    @Override    public void connect() throws IOException {        connected = true;    }    @Override    public InputStream getInputStream() throws IOException {        String data = url.toString();        data = data.replaceFirst("^.*;base64,", "");        System.out.println("data: " + data);        byte[] bytes = DatatypeConverter.parsebase64Binary(data);        return new ByteArrayInputStream(bytes);    }}

聪明的地方是

DatatypeConverter
在标准Java SE中使用base64解码。


聚苯乙烯

如今人们会使用

base64.getEnprer().enpre(...)



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5428222.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-11
下一篇 2022-12-11

发表评论

登录后才能评论

评论列表(0条)

保存