to.tetramorph.starbase.formatter
クラス FormatterFactory

java.lang.Object
  上位を拡張 javax.swing.JFormattedTextField.AbstractFormatterFactory
      上位を拡張 to.tetramorph.starbase.formatter.FormatterFactory

public class FormatterFactory
extends JFormattedTextField.AbstractFormatterFactory

JFormattedTextFieldに自前のフォーマッタをセットするためのラッパークラス。 NetBeansのGUIデザイナを使わないのであれば、このようなクラスは本来必要ない。 GUIデザイナは最初に必ず引数無しのコンストラクタでウィジェトのインスタンスを作成 し、後からメソッドによって必要なパラメターを設定することが前提になっている。
JFormattedTextField用に自前で用意した日付や時刻のフォーマッタがたくさんあり、 それらはJFormattedTextField.AbstractFormatterをextendsして作成されたものだ。 普通ならそれらのフォーマッタをコンストラクタで指定してJFormattedTextFieldの インスタンスを作ればよいのだが、GUIデザイナの制約から指定することができない。
ではメソッドによってフォーマッタを後から設定してやれば良いかというと、 JFormattedTextField#setFormatter()はprotectedなので、 そのままでは同.AbstractFormatterをこのメソッドでセットすることはできない。 子クラスを作りsetFormatterをオーバーライドすればよさそうだが、 実際にやってみるとsetFormatter呼び出しと共にスタックオーバーフローのエラーを 出して設定することができない。
そこでJFormattedTextField#setFormatterFactory()を使ってセットする方法を ためしてみたらうまくいった。
このクラスのコンストラクタに自前のフォーマッタを与えてインスタンスを作り、 それをJFormattedTextField#setFormatterFactory(..)を使ってセットする。

 例
 JFormattedTextField date;
 date.setFormatterFactory(new FormatterFactory(new MyDateFormatter()));
 


コンストラクタの概要
FormatterFactory(JFormattedTextField.AbstractFormatter fmt)
          自前のFormatterを与えて、インスタンスを作成する。
 
メソッドの概要
 JFormattedTextField.AbstractFormatter getFormatter(JFormattedTextField tf)
          JFormattedTextField.AbstractFormatterFactory#getFormatterの実装で コンストラクタで与えられたAbstractFormatterのインスタンスを返す。
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

FormatterFactory

public FormatterFactory(JFormattedTextField.AbstractFormatter fmt)
自前のFormatterを与えて、インスタンスを作成する。

パラメータ:
fmt - JFormattedTextField.AbstractFormatterをextendsして作成したフォーマッタ。
メソッドの詳細

getFormatter

public JFormattedTextField.AbstractFormatter getFormatter(JFormattedTextField tf)
JFormattedTextField.AbstractFormatterFactory#getFormatterの実装で コンストラクタで与えられたAbstractFormatterのインスタンスを返す。

定義:
クラス JFormattedTextField.AbstractFormatterFactory 内の getFormatter
パラメータ:
tf - プログラマは意識する必要なし。
戻り値:
フォーマッタを返す。