style_hilitewords.html

来自「java类库详细讲解」· HTML 代码 · 共 229 行

HTML
229
字号
<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<TITLE>Highlighting Words in a JTextComponent
(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">
<STYLE TYPE="text/css">
<!--     BODY CODE  {font-family: Courier, Monospace;           font-size: 11pt}    TABLE, BODY          {font-family: Verdana, Arial, Helvetica, sans-serif;           font-size: 10pt}    PRE   {font-family: Courier, Monospace;           font-size: 10pt}    H3    {font-family: Verdana, Arial, Helvetica, sans-serif;           font-size: 11pt}    A.eglink {text-decoration: none}    A:hover.eglink {text-decoration: underline}    -->
</STYLE>
</HEAD>
<BODY>
<TABLE CELLSPACING="0" CELLPADDING="0" BORDER="0">
<TR>
<TD rowspan="3"><A HREF="/?l=ex"><IMG BORDER="0" ALIGN="BOTTOM" HSPACE="10" SRC="/egs/almanac14a.jpg"></A></TD><TD VALIGN="top"><font face="Times" size="6"><b>The Java Developers Almanac 1.4</b></font>
<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">
<DIV ALIGN="LEFT">
<A HREF="/">Home</A>
    &gt;
    <A HREF="../index.html">List of Packages</A>
    &gt;
    <B><A HREF="../javax.swing.text/pkg.html">javax.swing.text</A></B><font color="#666666" SIZE="-2">
        &nbsp;[49 examples]
        </font>
        &gt;
        <B><A HREF="../javax.swing.text/pkg.html#Styles">Styles</A></B><font color="#666666" SIZE="-2">
            &nbsp;[9 examples]
            </font>
</DIV><P>
  <h3>
    e1005.  
    Highlighting Words in a JTextComponent</h3>

This example demonstrates how to highlight a range of characters in a
text component using highlights.  The example uses a text component's
highlighter to create and manage the highlights. Since one of the
highlights in the highlighter is the selection, we must be careful
when removing highlights not to remove the selection.

<P> The way in which we identify our highlights is to create the
highlight using a private painter.  So when removing highlights from
the highlighter, we remove only the ones whose painter is an instance
of the private painter.

<P> If many different highlight styles are required, it is
necessary to use styles with a <code>JTextPane</code>.  See
<a href="../javax.swing.text/style_HiliteWords2.html" class="eglink"><font size="-1"><b>e1006</b> Setting the Font and Color of Text in a JTextPane Using Styles</font></a> for more details.


<pre>
    JTextArea textComp = new JTextArea();
    
    // Highlight the occurrences of the word "public"
    highlight(textComp, <font color="#0066ff"><i>"public"</i></font>);
    
    // Creates highlights around all occurrences of pattern in textComp
    public void highlight(JTextComponent textComp, String pattern) {
        // First remove all old highlights
        removeHighlights(textComp);
    
        try {
            Highlighter hilite = textComp.getHighlighter();
            Document doc = textComp.getDocument();
            String text = doc.getText(0, doc.getLength());
            int pos = 0;
    
            // Search for pattern
            while ((pos = text.indexOf(pattern, pos)) &gt;= 0) {
                // Create highlighter using private painter and apply around pattern
                hilite.addHighlight(pos, pos+pattern.length(), myHighlightPainter);
                pos += pattern.length();
            }
        } catch (BadLocationException e) {
        }
    }
    
    // Removes only our private highlights
    public void removeHighlights(JTextComponent textComp) {
        Highlighter hilite = textComp.getHighlighter();
        Highlighter.Highlight[] hilites = hilite.getHighlights();
    
        for (int i=0; i&lt;hilites.length; i++) {
            if (hilites[i].getPainter() instanceof MyHighlightPainter) {
                hilite.removeHighlight(hilites[i]);
            }
        }
    }
    
    // An instance of the private subclass of the default highlight painter
    Highlighter.HighlightPainter myHighlightPainter = new MyHighlightPainter(<font color="#0066ff"><i>Color.red</i></font>);
    
    // A private subclass of the default highlight painter
    class MyHighlightPainter extends DefaultHighlighter.DefaultHighlightPainter {
        public MyHighlightPainter(Color color) {
            super(color);
        }
    }
</pre>
<P><table width="600" CELLSPACING="0" CELLPADDING="2" BORDER="0">
<tr>
<td bgcolor="#6666cc" align="center"><font color="#ffffff">
            &nbsp;Related Examples
        </font></td>
</tr>
</table>


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

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

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

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

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

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

e1012. <a class="eglink" href="style_ModStyle.html?l=rel">
    Automatically Updating Styled Text When a Style Is Updated
</a>
<br>

e1013. <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 FACE="Verdana, Arial, Helvetica, sans-serif" SIZE="0">
&copy; 2002 Addison-Wesley.
</FONT>
</BODY>
</HTML>

⌨️ 快捷键说明

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