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

📄 style_modstyle.htm

📁 这个压缩包里的都是超级经典的java例子
💻 HTM
字号:
<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<TITLE>Automatically Updating Styled Text When a Style Is Updated (Java Developers Almanac Example)
</TITLE>
<META CONTENT="Patrick Chan" NAME="AUTHOR">
<META CONTENT="Code Examples from The Java Developers Almanac 1.4" NAME="DESCRIPTION">
<META CONTENT="Addison-Wesley/Patrick Chan" NAME="OWNER">
<META CONTENT="3/20/02" NAME="revision">
<META CONTENT="no-cache" HTTP-EQUIV="Pragma">
<LINK href="/almanac.css" media="screen" type="text/css" rel="stylesheet">
</HEAD>
<BODY>
<TABLE CELLSPACING="0" CELLPADDING="0" BORDER="0">
<TR>
<TD></TD>
</TR>
</TABLE>
<br>
<TABLE CELLSPACING="0" CELLPADDING="0" BORDER="0">
<TR>
<TD></TD>
</TR>
<TR>
<TD rowspan="3"><A HREF="/?l=ex"><IMG BORDER="0" ALIGN="BOTTOM" HSPACE="10" SRC="/egs/almanac14a.jpg"></A></TD><TD VALIGN="top">
<h1>The Java Developers Almanac 1.4</h1>
<br>
        Order this book from <a href="/cgi-bin/scripts/redirect.pl?l=ex&url=http://www.amazon.com/exec/obidos/ASIN/0201752808/xeo">Amazon</a>.
    </TD>
</TR>
<TR>
<TD align="right" valign="bottom">
<FORM method="get" action="/cgi-bin/search/find.pl">
<INPUT size="25" name="words" type="text"><INPUT value="Search" type="submit">
</FORM>
</TD>
</TR>
</TABLE>
<HR color="#6666cc">
<TABLE CELLSPACING="0" CELLPADDING="0" BORDER="0">
<TR>
<TD valign="top"><script type="text/javascript">
<!--
google_ad_client = "pub-6001183370374757";
google_ad_width = 120;
google_ad_height = 600;
google_ad_format = "120x600_as";
google_ad_channel = "4777242811";
google_ad_type = "text_image";
google_color_border = "FFFFFF";
google_color_bg = "FFFFFF";
google_color_link = "6666CC";
google_color_url = "6666CC";
google_color_text = "000000";
//--></script><script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"></script></TD><TD>&nbsp;&nbsp;&nbsp;</TD><TD valign="top">
<DIV ALIGN="LEFT">
<A HREF="/">Home</A>
    &gt;
    <A HREF="../index.html">List of Packages</A>
    &gt;

    
    <A HREF="../javax.swing.text/pkg.html">javax.swing.text</A><font color="#666666" class="xsmall-font">
        &nbsp;[49 examples]
    </font>
        &gt;
        <B><A HREF="../javax.swing.text/pkg.html#Styles">Styles</A></B><font color="#666666" class="xsmall-font">
            &nbsp;[9 examples]
            </font>
</DIV><P>
  <h3>e1013. Automatically Updating Styled Text When a Style Is Updated</h3>

When a style is applied to text in a text pane, the text is set with
the attributes of the style.  If the style is changed, the set of
attributes associated with the range of text does not change.

<P> This example demonstrates how to have styled text automatically
updated when the style object used to style the text is changed.  When
a named style is applied to text, the name of the style is included in
the set of attributes that are associated with the text.  Hence, it is
possible to find all the places where a named style has been applied
in a text pane. The <code>reapplyStyle()</code> method takes a style object
and searches the text pane for all uses of the style (by name) and
reapplies it.

<P> In order to detect changes to a style, a change listener is
added to it.  Whenever the style is changed, the style's change
listener will call <code>reapplyStyle()</code> to update the text pane.


<pre>    final JTextPane textPane = new JTextPane();
    ChangeListener changeListener = new ChangeListener() {
        public void stateChanged(ChangeEvent e) {
            reapplyStyles(textPane, (Style)e.getSource());
        }
    };
    
    // Make paragraph red
    Style style = textPane.addStyle("Highlight", null);
    style.addChangeListener(changeListener);
    StyleConstants.setForeground(style, <font color="#0066ff"><i>Color.red</i></font>);
    textPane.setParagraphAttributes(style, true);
    // paragraph appears red
    
    style = textPane.getStyle("Highlight");
    StyleConstants.setUnderline(style, <font color="#0066ff"><i>true</i></font>);
    // paragraph becomes red and underlined
    
    // This method traverses every paragraph and content element
    // and reapplies any style that matches the specified style
    public static void reapplyStyles(JTextPane c, Style style) {
        // Get section element
        Element sectionElem = c.getDocument().getDefaultRootElement();
    
        // Get number of paragraphs.
        int paraCount = sectionElem.getElementCount();
    
        for (int i=0; i&lt;paraCount; i++) {
            Element paraElem = sectionElem.getElement(i);
            AttributeSet attr = paraElem.getAttributes();
    
            // Get the name of the style applied to this paragraph element; may be null
            String sn = (String)attr.getAttribute(StyleConstants.NameAttribute);
    
            // Check if style name match
            if (style.getName().equals(sn)) {
                // Reapply the paragraph style
                int rangeStart = paraElem.getStartOffset();
                int rangeEnd = paraElem.getEndOffset();
                c.getStyledDocument().setParagraphAttributes(
                    rangeStart, rangeEnd-rangeStart, style, true);
            }
    
            // Enumerate the content elements
            for (int j=0; j&lt;paraElem.getElementCount(); j++) {
                Element contentElem = paraElem.getElement(j);
                attr = contentElem.getAttributes();
    
                // Get the name of the style applied to this content element; may be null
                sn = (String)attr.getAttribute(StyleConstants.NameAttribute);
    
                // Check if style name match
                if (style.getName().equals(sn)) {
                    // Reapply the content style
                    int rangeStart = contentElem.getStartOffset();
                    int rangeEnd = contentElem.getEndOffset();
                    c.getStyledDocument().setCharacterAttributes(
                        rangeStart, rangeEnd-rangeStart, style, true);
                }
            }
        }
    }
</pre>
<P><table width="600" CELLSPACING="0" CELLPADDING="2" BORDER="0">
<tr>
<td bgcolor="#6666cc" align="center"><font color="#ffffff">
            &nbsp;<b>Related Examples</b></font></td>
</tr>
</table>


e1006. <a class="eglink" href="style_HiliteWords.html?l=rel">
    Highlighting Words in a JTextComponent
</a>
<br>

e1007. <a class="eglink" href="style_HiliteWords2.html?l=rel">
    Setting the Font and Color of Text in a JTextPane Using Styles
</a>
<br>

e1008. <a class="eglink" href="style_ShareStyleContext.html?l=rel">
    Sharing Styles Between JTextPanes
</a>
<br>

e1009. <a class="eglink" href="style_ListStyles.html?l=rel">
    Listing the Styles Associated with a JTextPane
</a>
<br>

e1010. <a class="eglink" href="style_ListAttr.html?l=rel">
    Listing the Attributes in a Style
</a>
<br>

e1011. <a class="eglink" href="style_ListStyles2.html?l=rel">
    Using a Popup to Apply Styles to a JTextPane
</a>
<br>

e1012. <a class="eglink" href="style_SetPara.html?l=rel">
    Retaining the Logical Style When Setting a New Paragraph Style
</a>
<br>

e1014. <a class="eglink" href="style_IsCharPara.html?l=rel">
    Determining If a Style Attribute Applies to a Character or the Paragraph
</a>
<br>


<table width="600" CELLSPACING="0" CELLPADDING="2" BORDER="0">
<tr>
<td align="left">
<br>
        See also: 
<a class="eglink" href="/egs/javax.swing.text/pkg.html?l=rel#Actions%20and%20Key%20Bindings">
    Actions and Key Bindings
</a>&nbsp;&nbsp;

<a class="eglink" href="/egs/javax.swing.text/pkg.html?l=rel#Caret%20and%20Selection">
    Caret and Selection
</a>&nbsp;&nbsp;

<a class="eglink" href="/egs/javax.swing.text/pkg.html?l=rel#Events">
    Events
</a>&nbsp;&nbsp;

<a class="eglink" href="/egs/javax.swing.text/pkg.html?l=rel#JEditorPane">
    JEditorPane
</a>&nbsp;&nbsp;

<a class="eglink" href="/egs/javax.swing.text/pkg.html?l=rel#JFormattedTextField">
    JFormattedTextField
</a>&nbsp;&nbsp;

<a class="eglink" href="/egs/javax.swing.text/pkg.html?l=rel#JTextArea">
    JTextArea
</a>&nbsp;&nbsp;

<a class="eglink" href="/egs/javax.swing.text/pkg.html?l=rel#JTextComponent">
    JTextComponent
</a>&nbsp;&nbsp;

<a class="eglink" href="/egs/javax.swing.text/pkg.html?l=rel#JTextField">
    JTextField
</a>&nbsp;&nbsp;

<a class="eglink" href="/egs/javax.swing.text/pkg.html?l=rel#JTextPane">
    JTextPane
</a>&nbsp;&nbsp;

</td>
</tr>
</table>

<br>

<br>
<FONT class="xsmall-font">
&copy; 2002 Addison-Wesley.
</FONT></TD><TD>&nbsp;&nbsp;&nbsp;</TD><TD valign="top"><A href="http://compositesw.com/devzone?ref=javaalmanac"><IMG alt="Click Here" height="600" width="120" border="0" src="/csw_oad_120x600_final.gif"></A></TD>
</TR>
</TABLE>
</BODY>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<META CONTENT="NO-CACHE" HTTP-EQUIV="PRAGMA">
</HEAD>
</HTML>

⌨️ 快捷键说明

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