
JEditorPane为将
JSVGCanvas画布用于SVG。为此,您需要一个专家
HTMLEditorKit。这里是
HTLMEditorKit的Appleteer。
package org.pspre.ui.applet.appleteer;import java.awt.Component;import java.awt.Dimension;// placeholder componentimport javax.swing.JButton;import javax.swing.text.html.HTML;import javax.swing.text.html.HTMLEditorKit;import javax.swing.text.View;import javax.swing.text.ComponentView;import javax.swing.text.PlainView;import javax.swing.text.ViewFactory;import javax.swing.text.Element;import javax.swing.text.AttributeSet;import javax.swing.text.StyleConstants;import org.pspre.ui.applet.appleteer.AppletElement;import org.pspre.ui.applet.appleteer.AppletLoaderContainer;import java.util.HashMap;import java.util.Enumeration;import java.net.URL;import java.util.logging.*;public class AppletEditorKit extends HTMLEditorKit { URL documentbase; PseudoBrowser browser; static int appletCount; static boolean hasNamedApplet; public AppletEditorKit(URL documentbase, PseudoBrowser browser) { this.documentbase = documentbase; this.browser = browser; appletCount = 0; hasNamedApplet = false; } public ViewFactory getViewFactory() { return new AppletHTMLFactory(documentbase, browser); } public static class AppletHTMLFactory extends HTMLFactory implements ViewFactory { URL documentbase; PseudoBrowser browser; AppletHTMLFactory(URL documentbase, PseudoBrowser browser) { this.documentbase = documentbase; this.browser = browser; } public View create(Element element) { AttributeSet set = element.getAttributes(); Object o = element.getAttributes().getAttribute(StyleConstants.NameAttribute); if (o instanceof HTML.Tag) { HTML.Tag kind = (HTML.Tag) o; Logger.getLogger("Appleteer").log( Level.FINEST, "AEK.c HTML.Tag: " + kind); if (kind == HTML.Tag.APPLET ) { if(!contains(element.getAttributes().getAttributeNames(),"endtag")) { View view; try { AppletElement ae = new AppletElement( element, browser, "applet" + appletCount++); view = new AppletView(ae); if ( ae.getName()!=null ) { hasNamedApplet = true; } } catch(Exception e) { return new PlainView(element); } return view; } else { return new PlainView(element); //return null; } } else if (kind == HTML.Tag.PARAM) { Logger.getLogger("Appleteer").log( Level.FINEST, "HTML Param: " + kind); } } return super.create( element ); } } public static boolean contains(Enumeration en, String name) { while( en.hasMoreElements() ) { Object o = en.nextElement(); if (o instanceof HTML.Attribute) { Logger.getLogger("Appleteer").log( Level.FINEST, "HTML.Attribute: " + 0); if (o.toString().equals(name)) { return true; } } } return false; }}欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)