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

📄 autoscrolltextpane.java

📁 一款即时通讯软件
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
        smiliesHashtable.put(smileyStrs[23], smileyIcons[10]);
        smiliesHashtable.put(smileyStrs[24], smileyIcons[10]);
        smiliesBackHashtable.put(smileyIcons[10], smileyStrs[22]);
        //beer2
        smiliesHashtable.put(smileyStrs[25], smileyIcons[11]);
        smiliesHashtable.put(smileyStrs[26], smileyIcons[11]);
        smiliesBackHashtable.put(smileyIcons[11], smileyStrs[25]);
        //beer
        smiliesHashtable.put(smileyStrs[27], smileyIcons[12]);
        smiliesHashtable.put(smileyStrs[28], smileyIcons[12]);
        smiliesBackHashtable.put(smileyIcons[12], smileyStrs[27]);
        //tea
        smiliesHashtable.put(smileyStrs[29], smileyIcons[13]);
        smiliesHashtable.put(smileyStrs[30], smileyIcons[13]);
        smiliesHashtable.put(smileyStrs[31], smileyIcons[13]);
        smiliesBackHashtable.put(smileyIcons[13], smileyStrs[29]);
        //thumbs_up
        smiliesHashtable.put(smileyStrs[32], smileyIcons[14]);
        smiliesHashtable.put(smileyStrs[33], smileyIcons[14]);
        smiliesBackHashtable.put(smileyIcons[14], smileyStrs[32]);
        //thumbs_down
        smiliesHashtable.put(smileyStrs[34], smileyIcons[15]);
        smiliesHashtable.put(smileyStrs[35], smileyIcons[15]);
        smiliesBackHashtable.put(smileyIcons[15], smileyStrs[34]);
        //clown
        smiliesHashtable.put(smileyStrs[36], smileyIcons[16]);
        smiliesBackHashtable.put(smileyIcons[16], smileyStrs[36]);
        
        // sets smiley icons descriptions
        for (int i=0; i<smileyIcons.length; i++) {
            String str = (String) smiliesBackHashtable.get(smileyIcons[i]);
            if (str != null)
                smileyIcons[i].setDescription(str);
        }
    }
    
    /** Inits styles */
    protected void initStyles() {
        Style defaultStyle = StyleContext.getDefaultStyleContext().
                                           getStyle(StyleContext.DEFAULT_STYLE);

        Style regularStyle = addStyle(REGULAR_STYLE, defaultStyle);

        Style nickStyle = addStyle(NICK_STYLE, regularStyle);
        //StyleConstants.setBold(nickStyle, true);
        
        Style myNickStyle = addStyle(MY_NICK_STYLE, nickStyle);
        StyleConstants.setForeground(myNickStyle, Color.red);
        
        Style buddyNickStyle = addStyle(BUDDY_NICK_STYLE, nickStyle);
        StyleConstants.setForeground(buddyNickStyle, Color.blue);
        
        Style s = addStyle(PRESENCE_STYLE, regularStyle);
        StyleConstants.setForeground(s, Color.gray);
        
        s = addStyle(TIME_STAMP_STYLE, regularStyle);
        StyleConstants.setForeground(s, Color.gray);
        
        s = addStyle(SMILEYS_STYLE, regularStyle);
        StyleConstants.setIcon(s, smileyIcons[0]);
        
        s = addStyle(HTML_STYLE, regularStyle);
        //StyleConstants.setComponent(s, new JLabel("<html></html>"));
        
        s = addStyle(URL_STYLE, regularStyle);
        StyleConstants.setForeground(s, Color.blue);
        StyleConstants.setUnderline(s, true);
        
        s = addStyle(URL_DESC_STYLE, regularStyle);
        StyleConstants.setItalic(s, true);
        
        s = addStyle(SENT_XML_STYLE, myNickStyle);
        s = addStyle(RECEIVED_XML_STYLE, buddyNickStyle);
        s = addStyle(SEND_ERR_XML_STYLE, myNickStyle);
        StyleConstants.setBackground(s, Color.lightGray);
    }
    
    /** Overloaded append function, which scrolls down */
    synchronized public void append(String str, String styleName) {
        
        if (REGULAR_STYLE.equals(styleName))
            parseSmileys(str, styleName);
        else if (HTML_STYLE.equals(styleName))
            appendHTMLImpl(str);
        else
            appendImpl(str, styleName);
        
        //scroll();
    }
    
    /** Parses the text and appends it with icons for smilies */
    protected void parseSmileys(String str, String styleName) {
        
        int index = 0;
        int lastIndex = 0;
        int tmpIndex;
        int closestSmiley;
        
        if (str == null) return;
        
        do {
            // looks for the closest smiley
            closestSmiley = -1;
            index = str.length();
            for (int i=0; i<smileyStrs.length; i++) {
                tmpIndex = str.indexOf(smileyStrs[i], lastIndex);
                if (tmpIndex != -1 && tmpIndex < index) {
                    index = tmpIndex;
                    closestSmiley = i;
                }
            }
            // if no smiley found
            if (closestSmiley == -1) break;
            // adds text to the closest smiley
            appendImpl(str.substring(lastIndex, index), styleName);
            // adds the smiley
            Icon icon = (Icon) smiliesHashtable.get(smileyStrs[closestSmiley]);
            if (icon != null)
                appendSmiley(icon);
            //appendSmiley(smileyIcons[closestSmiley]);
            lastIndex = index + smileyStrs[closestSmiley].length();
        } while (true);

        appendImpl(str.substring(lastIndex, str.length()), styleName);
    }
    
    
    /** Appends smiley icon */
    protected void appendSmiley(Icon smileyIcon) {
        Style s = getStyle(SMILEYS_STYLE);
        StyleConstants.setIcon(s, smileyIcon);
        appendImpl(" ", SMILEYS_STYLE);
    }
    
    
    /** Appends given text using given style */
    protected void appendImpl(String str, String styleName) {
        try {
            doc.insertString(doc.getLength(), str, getStyle(styleName));
        } catch (BadLocationException ble) {
            System.err.println("Couldn't append text.");
        }
    }
    
    
    /** Clears the pane */
    public void clear() {
        setText("");
    }
    
    
    /** Scrolls according to given policy */
    public void scroll() {
        try {
            Rectangle r;
            if (autoScrollDown)
                r = modelToView(doc.getLength());
            else
                r = modelToView(0);
            if (r != null)
                scrollRectToVisible(r);
        } catch (Exception e) {}
        
        revalidate();
        repaint();
    }
    
    
    /** Appends text as HTML */
    public void appendHTML(String htmlSource) {
        appendHTMLImpl(htmlSource);
        
        //scroll();
    }
    
    
    /** Implementation of appending text as HTML */
    protected void appendHTMLImpl(String htmlSource) {
        appendImpl("\n", REGULAR_STYLE);
        JLabel label = new JLabel(htmlSource);
        StyleConstants.setComponent(getStyle(HTML_STYLE), label);
        appendImpl(" ", HTML_STYLE);
        appendImpl("\n", REGULAR_STYLE);
    }
    
}

⌨️ 快捷键说明

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