📄 autoscrolltextpane.java
字号:
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 + -