Javaプログラミング/Javaプログラミング関連情報

マルチフォントのテキストエディタを作る(3ページ目)

Javaでマルチフォントを扱うのは、意外に面倒です。ごく簡単なマルチフォント対応テキストエディタを作ってみましょう。

執筆者:掌田 津耶乃

テキスト選択について


では、選択されているテキストをメニューでフォント設定するにはどうすればよいのでしょうか。これには、「選択されている領域」に関する情報が常に得られるようにしていなければいけません。

このような際に役立つのが、「CaretListener」です。これはテキストコンポーネントでキャレットの位置が変更されたときの処理を行うためのものです。これは以下のような形をしています。

public interface CaretListener extends EventListener {

void caretUpdate(CaretEvent e);
}


キャレットが変更されると、caretUpdateが呼び出されるので、ここに必要な処理を用意しておけばよいわけです。例えば、JTextPaneで選択されているテキストの開始位置と終了位置、そして選択範囲に設定されているAttributeSetを変数に取り出しておくなら、こんなクラスを用意しておけばよいでしょう。

class caretAction implements CaretListener {
  
  public void caretUpdate(CaretEvent ev) {
    selstart = textpane.getSelectionStart();
    selend = textpane.getSelectionEnd();
    StyledDocument doc = textpane.getStyledDocument();
    selectedAttribute = doc.getCharacterElement(selstart).getAttributes();
    selstart = textpane.getSelectionStart();
  }
}


JTextPaneで選択されているテキスト位置を得るには、「getSelectionStart」「getSelectionEnd」といったメソッドを用います。これで、それぞれ選択範囲の開始位置と終了位置が得られます。

また選択範囲のAttributeSetを得るには、まずJTextPaneのStyledDocumentの「getCharacterElement」を呼び出します。これはキャラクタを示す要素を「Element」インスタンスとして返すものです。このElementから「getAttributes」を呼び出すことで、AttributeSetインスタンスを取り出すことができます。

こうして取り出された『選択されたテキストのAttributeSet」に対し、先に述べたように各種のスタイル情報を設定し、改めてStyledDocumentに設定してやれば、選択範囲のスタイルを変更することができる、というわけです。


  • 前のページへ
  • 1
  • 2
  • 3
  • 4
  • 7
  • 次のページへ

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

    All About公式SNS
    日々の生活や仕事を楽しむための情報を毎日お届けします。
    公式SNS一覧
    © All About, Inc. All rights reserved. 掲載の記事・写真・イラストなど、すべてのコンテンツの無断複写・転載・公衆送信等を禁じます