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

📄 phrase.java

📁 源码包含生成 PDF 和 HTML 的类库
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
            }        }        catch(ClassCastException cce) {            throw new ClassCastException("Insertion of illegal Element: " + cce.getMessage());        }    }        /**     * Adds a <CODE>Chunk</CODE>, <CODE>Anchor</CODE> or another <CODE>Phrase</CODE>     * to this <CODE>Phrase</CODE>.     *     * @param	o	an object of type <CODE>Chunk</CODE>, <CODE>Anchor</CODE> or <CODE>Phrase</CODE>     * @return	a boolean     * @throws	ClassCastException	when you try to add something that isn't a <CODE>Chunk</CODE>, <CODE>Anchor</CODE> or <CODE>Phrase</CODE>     */    public boolean add(Object o) {    	if (o == null) return false;        if (o instanceof String) {            return super.add(new Chunk((String) o, font));        }        if (o instanceof RtfElementInterface) {        	return super.add(o);        }        try {            Element element = (Element) o;            switch(element.type()) {                case Element.CHUNK:                    return addChunk((Chunk) o);                case Element.PHRASE:                case Element.PARAGRAPH:                    Phrase phrase = (Phrase) o;                    boolean success = true;                    Element e;                    for (Iterator i = phrase.iterator(); i.hasNext(); ) {                        e = (Element) i.next();                        if (e instanceof Chunk) {                            success &= addChunk((Chunk)e);                        }                        else {                            success &= this.add(e);                        }                    }                    return success;                case Element.MARKED:                case Element.ANCHOR:                case Element.ANNOTATION:                case Element.TABLE: // case added by David Freels                case Element.PTABLE: // case added by mr. Karen Vardanyan                	// This will only work for PDF!!! Not for RTF/HTML                case Element.LIST:                case Element.YMARK:                	return super.add(o);                    default:                        throw new ClassCastException(String.valueOf(element.type()));            }        }        catch(ClassCastException cce) {            throw new ClassCastException("Insertion of illegal Element: " + cce.getMessage());        }    }        /**     * Adds a collection of <CODE>Chunk</CODE>s     * to this <CODE>Phrase</CODE>.     *     * @param	collection	a collection of <CODE>Chunk</CODE>s, <CODE>Anchor</CODE>s and <CODE>Phrase</CODE>s.     * @return	<CODE>true</CODE> if the action succeeded, <CODE>false</CODE> if not.     * @throws	ClassCastException	when you try to add something that isn't a <CODE>Chunk</CODE>, <CODE>Anchor</CODE> or <CODE>Phrase</CODE>     */    public boolean addAll(Collection collection) {        for (Iterator iterator = collection.iterator(); iterator.hasNext(); ) {            this.add(iterator.next());        }        return true;    }        /**     * Adds a Chunk.     * <p>     * This method is a hack to solve a problem I had with phrases that were split between chunks     * in the wrong place.     * @param chunk a Chunk to add to the Phrase     * @return true if adding the Chunk succeeded     */    protected boolean addChunk(Chunk chunk) {    	Font f = chunk.getFont();    	String c = chunk.getContent();        if (font != null && !font.isStandardFont()) {            f = font.difference(chunk.getFont());        }        if (size() > 0 && !chunk.hasAttributes()) {            try {                Chunk previous = (Chunk) get(size() - 1);                if (!previous.hasAttributes()                		&& (f == null                		|| f.compareTo(previous.getFont()) == 0)                		&& !"".equals(previous.getContent().trim())                		&& !"".equals(c.trim())) {                    previous.append(c);                    return true;                }            }            catch(ClassCastException cce) {            }        }        Chunk newChunk = new Chunk(c, f);        newChunk.setAttributes(chunk.getAttributes());        if (newChunk.getHyphenation() == null) {        	newChunk.setHyphenation(hyphenation);        }        return super.add(newChunk);    }        /**     * Adds a <CODE>Object</CODE> to the <CODE>Paragraph</CODE>.     *     * @param	object		the object to add.     */    protected void addSpecial(Object object) {        super.add(object);    }        // other methods that change the member variables        /**     * Sets the leading of this phrase.     *     * @param	leading		the new leading     */        public void setLeading(float leading) {        this.leading = leading;    }        /**     * Sets the main font of this phrase.     * @param font	the new font     */    public void setFont(Font font) {    	this.font = font;    }        // methods to retrieve information	/**     * Gets the leading of this phrase.     *     * @return	the linespacing     */    public float getLeading() {        if (Float.isNaN(leading) && font != null) {            return font.getCalculatedLeading(1.5f);        }        return leading;    }    /**     * Checks you if the leading of this phrase is defined.     *     * @return	true if the leading is defined     */     public boolean hasLeading() {        if (Float.isNaN(leading)) {            return false;        }        return true;    }	/**     * Gets the font of the first <CODE>Chunk</CODE> that appears in this <CODE>Phrase</CODE>.     *     * @return	a <CODE>Font</CODE>     */      public Font getFont() {        return font;    }	/**     * Returns the content as a String object.     * This method differs from toString because toString will return an ArrayList with the toString value of the Chunks in this Phrase.     */    public String getContent() {    	StringBuffer buf = new StringBuffer();    	for (Iterator i = getChunks().iterator(); i.hasNext(); ) {    		buf.append(i.next().toString());    	}    	return buf.toString();    }        /**     * Checks is this <CODE>Phrase</CODE> contains no or 1 empty <CODE>Chunk</CODE>.     *     * @return	<CODE>false</CODE> if the <CODE>Phrase</CODE>     * contains more than one or more non-empty<CODE>Chunk</CODE>s.     */    public boolean isEmpty() {        switch(size()) {            case 0:                return true;            case 1:                Element element = (Element) get(0);                if (element.type() == Element.CHUNK && ((Chunk) element).isEmpty()) {                    return true;                }                return false;                default:                    return false;        }    }        /**     * Getter for the hyphenation settings.     * @return	a HyphenationEvent     * @since	2.1.2     */    public HyphenationEvent getHyphenation() {		return hyphenation;	}    /**     * Setter for the hyphenation.     * @param	hyphenation	a HyphenationEvent instance     * @since	2.1.2     */	public void setHyphenation(HyphenationEvent hyphenation) {		this.hyphenation = hyphenation;	}	    // kept for historical reasons; people should use FontSelector    // eligible for deprecation, but the methods are mentioned in the book p277.        /**     * Constructs a Phrase that can be used in the static getInstance() method.     * @param	dummy	a dummy parameter     */    private Phrase(boolean dummy) {    }        /**     * Gets a special kind of Phrase that changes some characters into corresponding symbols.     * @param string     * @return a newly constructed Phrase     */    public static final Phrase getInstance(String string) {    	return getInstance(16, string, new Font());    }        /**     * Gets a special kind of Phrase that changes some characters into corresponding symbols.     * @param leading     * @param string     * @return a newly constructed Phrase     */    public static final Phrase getInstance(int leading, String string) {    	return getInstance(leading, string, new Font());    }        /**     * Gets a special kind of Phrase that changes some characters into corresponding symbols.     * @param leading     * @param string     * @param font     * @return a newly constructed Phrase     */    public static final Phrase getInstance(int leading, String string, Font font) {    	Phrase p = new Phrase(true);    	p.setLeading(leading);    	p.font = font;    	if (font.getFamily() != Font.SYMBOL && font.getFamily() != Font.ZAPFDINGBATS && font.getBaseFont() == null) {            int index;            while((index = SpecialSymbol.index(string)) > -1) {                if (index > 0) {                    String firstPart = string.substring(0, index);                    ((ArrayList)p).add(new Chunk(firstPart, font));                    string = string.substring(index);                }                Font symbol = new Font(Font.SYMBOL, font.getSize(), font.getStyle(), font.getColor());                StringBuffer buf = new StringBuffer();                buf.append(SpecialSymbol.getCorrespondingSymbol(string.charAt(0)));                string = string.substring(1);                while (SpecialSymbol.index(string) == 0) {                    buf.append(SpecialSymbol.getCorrespondingSymbol(string.charAt(0)));                    string = string.substring(1);                }                ((ArrayList)p).add(new Chunk(buf.toString(), symbol));            }        }        if (string != null && string.length() != 0) {        	((ArrayList)p).add(new Chunk(string, font));        }    	return p;    }}

⌨️ 快捷键说明

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