TITLE:Highlighterで文字列をハイライト
Posted by terai at 2005-12-05

Highlighterで文字列をハイライト

Highlighterを使ってテキスト中の文字列を強調表示します。
  • category: swing folder: Highlighter title: Highlighterで文字列をハイライト tags: [JTextComponent, Highlighter] author: aterai pubdate: 2005-12-05T11:02:14+09:00 description: Highlighterを使ってテキスト中の文字列を強調表示します。 image: https://lh6.googleusercontent.com/_9Z4BYR88imo/TQTN25SyRaI/AAAAAAAAAbc/i3gVEjh-mlQ/s800/Highlighter.png

概要

Highlighterを使ってテキスト中の文字列を強調表示します。

#screenshot

サンプルコード

#spanend
#spandel
public void setHighlight(JTextComponent jtc, String pattern) {
#spanend
  removeHighlights(jtc);
  try{
    Highlighter hilite = jtc.getHighlighter();
    Document doc = jtc.getDocument();
    String text = doc.getText(0, doc.getLength());
    int pos = 0;
    while((pos = text.indexOf(pattern, pos)) >= 0) {
      hilite.addHighlight(pos, pos+pattern.length(), highlightPainter);
      pos += pattern.length();
    }
  }catch(BadLocationException e) {}
#spanadd
* サンプルコード [#sourcecode]
#spanend
#spanadd
#code(link){{
#spanend
#spanadd
jtc.getHighlighter().removeAllHighlights();
#spanend
#spanadd
try {
#spanend
  Highlighter highlighter = jtc.getHighlighter();
  Document doc = jtc.getDocument();
  String text = doc.getText(0, doc.getLength());
  Matcher matcher = Pattern.compile(pattern).matcher(text);
  int pos = 0;
  while (matcher.find(pos) && !matcher.group().isEmpty()) {
    pos = matcher.end();
    highlighter.addHighlight(matcher.start(), pos, highlightPainter);
  }
#spanadd
} catch (BadLocationException | PatternSyntaxException ex) {
#spanend
  ex.printStackTrace();
}

解説

テキストコンポーネントからHighlighterを取得し、Highlighter#addHighlightメソッドで検索した文字列を追加していきます。

解説

  • テキストコンポーネントからHighlighterを取得し、Highlighter#addHighlight(...)メソッドで検索した文字列を追加
  • 上記のサンプルではハイライト色をDefaultHighlighter.DefaultHighlightPainterを使用して設定
上記のサンプルでは、ハイライト色をDefaultHighlighter.DefaultHighlightPainterを使って指定しています。

参考リンク

参考リンク

コメント