myhtmleditorkit.java
来自「很棒的web服务器源代码」· Java 代码 · 共 134 行
JAVA
134 行
// MyHTMLEditorKit.java// $Id: MyHTMLEditorKit.java,v 1.4 2000/08/16 21:37:30 ylafon Exp $// (c) COPYRIGHT MIT, INRIA and Keio, 1999.// Please first read the full copyright statement in file COPYRIGHT.htmlpackage org.w3c.jigadmin.editors;import javax.swing.JEditorPane;import javax.swing.text.Document;import javax.swing.text.AttributeSet;import javax.swing.text.Element;import javax.swing.text.html.HTML;import javax.swing.text.html.HTMLEditorKit;import javax.swing.text.html.HTMLDocument;import javax.swing.event.HyperlinkEvent;import javax.swing.event.MouseInputAdapter;import java.awt.event.MouseEvent;import java.awt.Point;import java.io.Serializable;import java.net.URL;import java.net.MalformedURLException;/** * A special HTMLEditorKit that handle mouse event. */public class MyHTMLEditorKit extends HTMLEditorKit { public static final int JUMP = 0; public static final int MOVE = 1; LinkController myController = new LinkController(); /** * Called when the kit is being installed into the a JEditorPane. * @param c the JEditorPane. */ public void install(JEditorPane c) { c.addMouseListener(myController); c.addMouseMotionListener(myController); } /** * Our MouseListener. */ public static class LinkController extends MouseInputAdapter implements Serializable { URL currentUrl = null; public void mouseClicked(MouseEvent e) { JEditorPane editor = (JEditorPane) e.getSource(); if (! editor.isEditable()) { Point pt = new Point(e.getX(), e.getY()); try { int pos = editor.viewToModel(pt); if (pos >= 0) { activateLink(pos, editor, JUMP); } } catch (IllegalArgumentException iae) {} } } public void mouseMoved(MouseEvent e) { JEditorPane editor = (JEditorPane) e.getSource(); if (! editor.isEditable()) { Point pt = new Point(e.getX(), e.getY()); try { int pos = editor.viewToModel(pt); if (pos >= 0) { activateLink(pos, editor, MOVE); } } catch (IllegalArgumentException iae) {} } } protected void activateLink(int pos, JEditorPane html, int type) { Document doc = html.getDocument(); if (doc instanceof HTMLDocument) { HTMLDocument hdoc = (HTMLDocument) doc; Element e = hdoc.getCharacterElement(pos); AttributeSet a = e.getAttributes(); AttributeSet anchor = (AttributeSet) a.getAttribute(HTML.Tag.A); String href = (anchor != null) ? (String) anchor.getAttribute(HTML.Attribute.HREF) : null; boolean shouldExit = false; HyperlinkEvent linkEvent = null; if (href != null) { URL u; try { u = new URL(hdoc.getBase(), href); } catch (MalformedURLException m) { u = null; } if ((type == MOVE) && (!u.equals(currentUrl))) { linkEvent = new HyperlinkEvent(html, HyperlinkEvent.EventType.ENTERED, u, href); currentUrl = u; } else if (type == JUMP) { linkEvent = new HyperlinkEvent(html, HyperlinkEvent.EventType.ACTIVATED, u, href); shouldExit = true; } else { return; } html.fireHyperlinkUpdate(linkEvent); } else if (currentUrl != null) { shouldExit = true; } if (shouldExit) { linkEvent = new HyperlinkEvent(html, HyperlinkEvent.EventType.EXITED, currentUrl, null); html.fireHyperlinkUpdate(linkEvent); currentUrl = null; } } } }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?