⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 htmltreecellrenderer.java

📁 本程序用于对页面信息进行提取并分析
💻 JAVA
字号:
// HTMLParser Library $Name: v1_6_20060319 $ - A java-based parser for HTML// http://sourceforge.org/projects/htmlparser// Copyright (C) 2005 Derrick Oswald//// Revision Control Information//// $Source: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/parserapplications/filterbuilder/HtmlTreeCellRenderer.java,v $// $Author: derrickoswald $// $Date: 2005/04/12 11:27:42 $// $Revision: 1.2 $//// This library is free software; you can redistribute it and/or// modify it under the terms of the GNU Lesser General Public// License as published by the Free Software Foundation; either// version 2.1 of the License, or (at your option) any later version.//// This library is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU// Lesser General Public License for more details.//// You should have received a copy of the GNU Lesser General Public// License along with this library; if not, write to the Free Software// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA//                                                                                                  package org.htmlparser.parserapplications.filterbuilder;import java.awt.Component;import java.util.Vector;import javax.swing.JTree;import javax.swing.tree.DefaultTreeCellRenderer;import javax.swing.tree.TreeCellRenderer;import org.htmlparser.Attribute;import org.htmlparser.Node;import org.htmlparser.lexer.Cursor;import org.htmlparser.nodes.TagNode;import org.htmlparser.nodes.TextNode;import org.htmlparser.util.ParserException;import org.htmlparser.util.Translate;/** * Renderer for tree view of a NodeList. */public class HtmlTreeCellRenderer    extends        DefaultTreeCellRenderer    implements        TreeCellRenderer{    /**     * Create a new tree cell renderer for Nodes.     */    public HtmlTreeCellRenderer ()    {        setLeafIcon (null);        setClosedIcon (null);        setOpenIcon (null);    }    /**     * Render the tag as HTML.     * This is different from the tag's normal toHtml() method in that it     * doesn't process children or end tags, just the initial tag, and     * it also wraps the tag in html a label would expect.     * @see org.htmlparser.Node#toHtml()     * @param tag The tag to convert to HTML.     * @return A string suitable for rendering the tag.     */    public String toHtml (TagNode tag)    {        int length;        int size;        Vector attributes;        Attribute attribute;        String s;        boolean children;        StringBuffer ret;        length = 2;        attributes = tag.getAttributesEx ();        size = attributes.size ();        for (int i = 0; i < size; i++)        {            attribute = (Attribute)attributes.elementAt (i);            length += attribute.getLength ();        }        ret = new StringBuffer (length);        ret.append ("<");        for (int i = 0; i < size; i++)        {            attribute = (Attribute)attributes.elementAt (i);            attribute.toString (ret);        }        ret.append (">");        s = Translate.encode (ret.toString ());        children = null != tag.getChildren ();        ret = new StringBuffer (s.length () + 13 + (children ? 16 : 0));        ret.append ("<html>");        if (children)            ret.append ("<font color=\"blue\">");        ret.append (s);        if (children)            ret.append ("</font>");        ret.append ("</html>");        return (ret.toString ());    }        /**     * Express this string node as a printable string     * This is suitable for display in a debugger or output to a printout.     * Control characters are replaced by their equivalent escape     * sequence and contents is truncated to 80 characters.     * @param node The node to render.     * @return A string representation of the string node.     */    public String toText (TextNode node)    {        int startpos;        int endpos;        String s;        char c;        StringBuffer ret;        startpos = node.getStartPosition ();        endpos = node.getEndPosition ();        ret = new StringBuffer (endpos - startpos + 20);        s = node.toHtml ();        for (int i = 0; i < s.length (); i++)        {            c = s.charAt (i);            switch (c)            {                case '\t':                    ret.append ("\\t");                    break;                case '\n':                    ret.append ("\\n");                    break;                case '\r':                    ret.append ("\\r");                    break;                default:                    ret.append (c);            }            if (77 <= ret.length ())            {                ret.append ("...");                break;            }        }        return (ret.toString ());    }    /**     * Render the node for the tree cell.     * @see TreeCellRenderer#getTreeCellRendererComponent(JTree, Object, boolean, boolean, boolean, int, boolean)     * @param tree {@inheritDoc}     * @param value {@inheritDoc}     * @param selected {@inheritDoc}     * @param expanded {@inheritDoc}     * @param leaf {@inheritDoc}     * @param row {@inheritDoc}     * @param hasFocus {@inheritDoc}     * @return {@inheritDoc}     */    public Component getTreeCellRendererComponent (JTree tree, Object value,            boolean selected, boolean expanded, boolean leaf, int row,            boolean hasFocus)    {        Node node;        super.getTreeCellRendererComponent (tree, value, selected, expanded, leaf, row, hasFocus);        node = (Node)value;        if (node instanceof TagNode)            setText (toHtml ((TagNode)node));        else if (node instanceof TextNode)            setText (toText ((TextNode)node));        else            setText (node.toHtml ());        return (this);    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -