目次へ

10.3. javax.swing.text.Document

「JTextField」も「JTextArea」も内部データの管理を、「Document」インタフェースを実装したクラスで行っています。このインタフェースを実装する事により、数字しか受け付けないテキストフィールドなどを作成する事ができます。

1. class SampleDocument extends PlainDocument{
2.   public void insertString(int offset, String text, AttributeSet attributes){
3.       throws BadLocationException{
4.    try{
5.      Integer.parseInt(text);
6.    }catch(NumberFormatException e){
7.      return;
8.    }
9.    super.insertString(offset,text,attributes);
10.  }
11.}

以上は数字しか受け付けないテキストコンポーネントのためのドキュメントクラスです。「JTextField」も「JTextArea」もどちらも文字毎にフォントなどの属性を設定できないので、最も簡単な「PlainDocument」クラスを拡張して作成しています。

「insertString」は文字列が追加されたときに呼ばれるメソッドです。3行目の「throws BadLocationException」はこのメソッドが「BadLocationException」例外を発生する可能性があることを示しています。

5行目で入力文字列へ数字に変換していますが、入力文字列が数字で無い場合は「NumberFormatException」が発生します。この例外を補足して例外処理に移り、入力文字列を追加せずに「return」しているのです。例外が発生しない場合は9行目で入力文字列の追加を実行しています。

(実習課題3)

以下のプログラムを作成しなさい。

  • ウィンドウに含まれるコンポーネントはテキストフィールド1つ。そのテキストフィールドが持つ特徴は以下のとおり。
    • 4文字までしか入力する事ができない。
    • 「a」を入力しようとすると、「b」が入力される。
    • 文字を削除しようとすると、その左となりの文字が削除される。
  • 「Document」インタフェースを利用して作成する事。
  • (ヒント)「remove」メソッドを実装する事。

解答例はこちら

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp