TOP →
Java →
Swing →
JTextArea → This Page
JTextArea@Swing サンプル08
概要
Java -
Swing -
JTextArea のサンプルです。
・指定文字をハイライト表示
解説
サンプルでは "def" をハイライト表示させています。
サンプルイメージ
サンプルソース
import java.awt.Color;
import java.awt.Font;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.regex.PatternSyntaxException;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.border.BevelBorder;
import javax.swing.text.BadLocationException;
import javax.swing.text.DefaultHighlighter;
import javax.swing.text.Document;
import javax.swing.text.Highlighter;
/**
* JTextArea サンプル08
* ・指定文字をハイライト表示
*
* @author みっちー
*/
public class JTextArea08 extends JFrame {
private static final long serialVersionUID = 1L;
private final Highlighter.HighlightPainter highlightPainter = new DefaultHighlighter.DefaultHighlightPainter(Color.YELLOW);
/**
* 開始メソッド
*
* @param args パラメータ
*/
public static void main(String[] args) {
JTextArea08 frame = new JTextArea08();
// 閉じるボタンをクリックされた場合の動作を設定
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// ウインドウのタイトルを設定
frame.setTitle("JTextArea サンプル08");
// フレームの X座標、Y座標、幅、高さを設定
frame.setBounds(100, 200, 400, 200);
// フレームを表示(これをしないと透明のフレームが立ち上がってしまう)
frame.setVisible(true);
}
/**
* コンストラクタ
*/
public JTextArea08() {
// パネルを作成
JPanel panelBase = new JPanel();
// テキストを作成
JTextArea text1 = new JTextArea("abcdefghijklmn\nopqrstuvwxyz\nabcdefghijklm\nopqrstuvwxyz", 5, 20);
// 分かりやすいように枠線設定
text1.setBorder(new BevelBorder(BevelBorder.LOWERED));
// フォントを設定
text1.setFont(new Font("MS ゴシック", Font.BOLD, 20));
// 指定文字をハイライト表示
try {
Highlighter highlighter = text1.getHighlighter();
Document doc = text1.getDocument();
String text = doc.getText(0, doc.getLength());
Matcher matcher = Pattern.compile("def").matcher(text);
int pos = 0;
while (matcher.find(pos)) {
pos = matcher.end();
highlighter.addHighlight(matcher.start(), pos, highlightPainter);
}
} catch (BadLocationException | PatternSyntaxException e) {
e.printStackTrace();
}
// テキストを追加
panelBase.add(text1);
// パネルを追加
getContentPane().add(panelBase);
}
}
サンプルソースのダウンロード
ソースのダウンロード(Eclipse用のプロジェクトファイルも同梱)
更新履歴
2016/05/13 新規作成
TOP →
Java →
Swing →
JTextArea → This Page