|
JavaTM 2 Platform Std. Ed. v1.4.0 |
||||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | ||||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | ||||||||||
java.lang.Object
|
+--java.awt.Component
|
+--java.awt.Container
|
+--javax.swing.JComponent
|
+--javax.swing.text.JTextComponent
|
+--javax.swing.JTextField
|
+--javax.swing.JFormattedTextField
JFormattedTextField は、JTextField を拡張して、任意の値のフォーマットのサポート機能、ユーザがテキストを編集したあとでの特定のオブジェクト取得のサポート機能を追加します。JFormattedTextField の日付編集用の設定例を次に挙げます。
JFormattedTextField ftf = new JFormattedTextField(); ftf.setValue(new Date());
JFormattedTextField が一度生成されると、PropertyChangeListener を追加し、プロパティ名 value を使用して PropertyChangeEvent を待機することで、変更の編集を待機できます。
JFormattedTextField により、フォーカスが失われた場合に実行するアクションの設定が可能になります。次の設定が用意されています。
| JFormattedTextField.REVERT | getValue の表示に合うように、表示を元に戻す。現在の編集は失われる可能性がある
|
| JFormattedTextField.COMMIT | 現在の値を確定。現在の値が AbstractFormatter による正当な値ではなく、ParseException がスローされる場合、値は変更されず、編集された値がそのまま残る
|
| JFormattedTextField.COMMIT_OR_REVERT | COMMIT とほぼ同じ。値が正当なものでない場合は REVERT と同様
|
| JFormattedTextField.PERSIST | 何も処理しない。新しい AbstractFormatter の取得、値の更新、どちらも実行しない
|
JFormattedTextField.COMMIT_OR_REVERT です。追加情報については、setFocusLostBehavior(int) を参照してください。
JFormattedTextField により、現在編集中の値が不正な場合でもフォーカスは移動が可能になります。JFormattedTextField の編集状態が不正な場合にフォーカスをロックするには、InputVerifier を接続します。このような InputVerifier を実装したコードの一部を例として挙げます。
public class FormattedTextFieldVerifier extends InputVerifier {
public boolean verify(JComponent input) {
if (input instanceof JFormattedTextField) {
JFormattedTextField ftf = new JFormattedTextField();
AbstractFormatter formatter = ftf.getFormatter();
if (formatter != null) {
String text = ftf.getText();
try {
formatter.stringToValue(text);
return true;
} catch (ParseException pe) {
return false;
}
}
}
return true;
}
public boolean shouldYieldFocus(JComponent input) {
return verify(input);
}
}
commitEdit を呼び出すことでも値を確定できます。
JFormattedTextField はそれ自体ではフォーマットを行わず、JFormattedTextField.AbstractFormatterFactory のインスタンスから取得される、JFormattedTextField.AbstractFormatter のインスタンスでフォーマットを行います。JFormattedTextField.AbstractFormatter のインスタンスは、アクティブになったときに install メソッドから通知を受け、JFormattedTextField.AbstractFormatter はその時点で必要なオブジェクトをインストールできます。通常は DocumentFilter がインストールされます。JFormattedTextField で AbstractFormatter が不要になった場合は、同様に uninstall が呼び出されます。
JFormattedTextField は、通常、フォーカスを取得または喪失したときに、AbstractFormat に対する AbstractFormatterFactory を照会します。ただし、これはフォーカス喪失ポリシーに基づいて変更できます。フォーカス喪失ポリシーが JFormattedTextField.PERSIST であり、JFormattedTextField が編集されている場合、AbstractFormatterFactory は値が確定されるまで照会されません。同様に、フォーカス喪失ポリシーが JFormattedTextField.COMMIT であり、例外が stringToValue からスローされる場合は、AbstractFormatterFactory はフォーカスが喪失または取得されるまで照会されません。
JFormattedTextField.AbstractFormatter は、確定値の JFormattedTextField への設定タイミングも決定します。JFormattedTextField.AbstractFormatter のなかには、編集のたびに新しく値を生成するものもあり、まったく値を確定しないものもあります。commitEdit を呼び出すことで、現在の値を現在の JFormattedTextField.AbstractFormatter から強制的に取得できるようになります。commitEdit は JFormattedTextField で [return] を押すたびに呼び出されます。
AbstractFormatterFactory が明示的に設定されていない場合で、値が null 以外のときには、setValue が呼び出されたあとに、値タイプの Class に基づいて AbstractFormatterFactory が設定されます。たとえば、次のコードでは、適切な AbstractFormatterFactory と AbstractFormatter が、数値のフォーマット処理のために生成されます。
JFormattedTextField tf = new JFormattedTextField(); tf.setValue(new Number(100));
警告: AbstractFormatter は、通常、Document に DocumentFilter をインストールし、JFormattedTextField に NavigationFilter をインストールするため、この 2 つを独自にインストールしないでください。独自にインストールすると、動作が奇妙になり、AbstractFormatter の編集ポリシーが強化されなくなります。
警告:
このクラスの直列化オブジェクトは今後リリースされる Swing との互換性はありません。現在サポートされている直列化は、短期間の保管、または同じバージョンの Swing が稼働しているアプリケーション間の RMI に適しています。1.4 からは、すべての JavaBeansTM の長期間の保管が java.beans パッケージで追加サポートされています。XMLEncoder を参照してください。
| 入れ子クラスの概要 | |
static class |
JFormattedTextField.AbstractFormatter
AbstractFormatter のインスタンスは、Object から String および String から Object への変換を処理するために JFormattedTextField で使用されます。 |
static class |
JFormattedTextField.AbstractFormatterFactory
AbstractFormatterFactory のインスタンスは JFormattedTextField で使用され、値のフォーマットに使用される AbstractFormatter のインスタンスを取得します。 |
| クラス javax.swing.JTextField から継承した入れ子クラス |
JTextField.AccessibleJTextField |
| クラス javax.swing.text.JTextComponent から継承した入れ子クラス |
JTextComponent.AccessibleJTextComponent, JTextComponent.KeyBinding |
| クラス javax.swing.JComponent から継承した入れ子クラス |
JComponent.AccessibleJComponent |
| クラス java.awt.Container から継承した入れ子クラス |
Container.AccessibleAWTContainer |
| クラス java.awt.Component から継承した入れ子クラス |
Component.AccessibleAWTComponent, Component.BltBufferStrategy, Component.FlipBufferStrategy |
| フィールドの概要 | |
static int |
COMMIT
フォーカス喪失時に commitEdit を呼び出すことを指定する定数です。 |
static int |
COMMIT_OR_REVERT
フォーカス喪失時に commitEdit を呼び出すことを指定する定数です。 |
static int |
PERSIST
フォーカス喪失時に編集されている値を残しておくことを指定する定数です。 |
static int |
REVERT
フォーカス喪失時に、編集中の値を JFormattedTextField の現在の値セットに戻すことを指定する定数です。 |
| クラス javax.swing.JTextField から継承したフィールド |
notifyAction |
| クラス javax.swing.text.JTextComponent から継承したフィールド |
DEFAULT_KEYMAP, FOCUS_ACCELERATOR_KEY |
| クラス javax.swing.JComponent から継承したフィールド |
accessibleContext, listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW |
| クラス java.awt.Component から継承したフィールド |
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT |
| インタフェース javax.swing.SwingConstants から継承したフィールド |
BOTTOM, CENTER, EAST, HORIZONTAL, LEADING, LEFT, NEXT, NORTH, NORTH_EAST, NORTH_WEST, PREVIOUS, RIGHT, SOUTH, SOUTH_EAST, SOUTH_WEST, TOP, TRAILING, VERTICAL, WEST |
| インタフェース java.awt.image.ImageObserver から継承したフィールド |
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH |
| コンストラクタの概要 | |
JFormattedTextField()
AbstractFormatterFactory なしで JFormattedTextField を生成します。 |
|
JFormattedTextField(Format format)
JFormattedTextField を生成します。 |
|
JFormattedTextField(JFormattedTextField.AbstractFormatter formatter)
指定された AbstractFormatter を使用して JFormattedTextField を生成します。 |
|
JFormattedTextField(JFormattedTextField.AbstractFormatterFactory factory)
指定された AbstractFormatterFactory を使用して JFormattedTextField を生成します。 |
|
JFormattedTextField(JFormattedTextField.AbstractFormatterFactory factory,
Object currentValue)
指定された AbstractFormatterFactory と初期値を使用して JFormattedTextField を生成します。 |
|
JFormattedTextField(Object value)
指定された値を使用して JFormattedTextField を生成します。 |
|
| メソッドの概要 | |
void |
commitEdit()
現在の値を AbstractFormatter から強制的に取得し、現在の値として設定します。 |
Action[] |
getActions()
エディタのコマンドリストを返します。 |
int |
getFocusLostBehavior()
フォーカス喪失時の動作を返します。 |
JFormattedTextField.AbstractFormatter |
getFormatter()
現在の値のフォーマットと解析に使用される AbstractFormatter を返します。 |
JFormattedTextField.AbstractFormatterFactory |
getFormatterFactory()
現在の AbstractFormatterFactory を返します。 |
String |
getUIClassID()
UI のクラス ID を返します。 |
Object |
getValue()
最新の有効な値を返します。 |
protected void |
invalidEdit()
ユーザが無効な値を入力した場合に呼び出されます。 |
boolean |
isEditValid()
現在編集中の値が有効な場合に true を返します。 |
protected void |
processFocusEvent(FocusEvent e)
FocusEvent.FOCUS_GAINED や FocusEvent.FOCUS_LOST などの任意のフォーカスイベントを処理します。 |
void |
setDocument(Document doc)
エディタをテキストドキュメントに関連付けます。 |
void |
setFocusLostBehavior(int behavior)
フォーカス喪失時の動作を設定します。 |
protected void |
setFormatter(JFormattedTextField.AbstractFormatter format)
現在の AbstractFormatter を設定します。
|
void |
setFormatterFactory(JFormattedTextField.AbstractFormatterFactory tf)
AbstractFormatterFactory を設定します。 |
void |
setValue(Object value)
現在の AbstractFormatterFactory から取得した AbstractFormatter でフォーマットされる値を設定します。 |
| クラス java.lang.Object から継承したメソッド |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
| フィールドの詳細 |
public static final int COMMIT
commitEdit を呼び出すことを指定する定数です。新しい値の確定時に ParseException がスローされると、無効な値がそのまま残ることになります。
setFocusLostBehavior(int),
定数フィールド値public static final int COMMIT_OR_REVERT
commitEdit を呼び出すことを指定する定数です。新しい値の確定時に ParseException がスローされると、元の値に戻されます。
setFocusLostBehavior(int),
定数フィールド値public static final int REVERT
JFormattedTextField の現在の値セットに戻すことを指定する定数です。
setFocusLostBehavior(int),
定数フィールド値public static final int PERSIST
setFocusLostBehavior(int),
定数フィールド値| コンストラクタの詳細 |
public JFormattedTextField()
AbstractFormatterFactory なしで JFormattedTextField を生成します。setMask または setFormatterFactory を使用して JFormattedTextField を構築し、特定の値タイプを編集します。
public JFormattedTextField(Object value)
value のタイプに基づいた AbstractFormatterFactory が生成されます。
value - JformattedTextField の初期値public JFormattedTextField(Format format)
JFormattedTextField を生成します。format は適切な AbstractFormatter にラップされ、AbstractFormatter は AbstractFormatterFactory にラップされます。
format - AbstractFormatter の検索に使用されるフォーマットpublic JFormattedTextField(JFormattedTextField.AbstractFormatter formatter)
AbstractFormatter を使用して JFormattedTextField を生成します。AbstractFormatter は AbstractFormatterFactory に配置されます。
formatter - フォーマットで使用される AbstractFormatterpublic JFormattedTextField(JFormattedTextField.AbstractFormatterFactory factory)
AbstractFormatterFactory を使用して JFormattedTextField を生成します。
factory - フォーマットに使用される AbstractFormatterFactory
public JFormattedTextField(JFormattedTextField.AbstractFormatterFactory factory,
Object currentValue)
AbstractFormatterFactory と初期値を使用して JFormattedTextField を生成します。
factory - フォーマットに使用される AbstractFormatterFactorycurrentValue - 使用される初期値| メソッドの詳細 |
public void setFocusLostBehavior(int behavior)
JFormattedTextField.COMMIT_OR_REVERT、JFormattedTextField.REVERT、JFormattedTextField.COMMIT、または JFormattedTextField.PERSIST のどれかになります。AbstractFormatter のなかには、変更発生時に変更をプッシュするものがあります。そのため、この値は動作に影響を与えません。
渡されるオブジェクトの値が前述の値でない場合は IllegalArgumentException がスローされます。
このプロパティのデフォルト値は JFormattedTextField.COMMIT_OR_REVERT です。
behavior - フォーカス喪失時の動作
IllegalArgumentException - 動作が指定された値で示されるものでない場合public int getFocusLostBehavior()
COMMIT_OR_REVERT、COMMIT、REVERT、または PERSIST のどれかです。AbstractFormatter のなかには、変更発生時に変更をプッシュするものがあります。そのため、この値は動作には影響を与えません。
public void setFormatterFactory(JFormattedTextField.AbstractFormatterFactory tf)
AbstractFormatterFactory を設定します。AbstractFormatterFactory は、表示値のフォーマット、および編集ポリシー強化に使用される AbstractFormatter のインスタンスを返すことができます。
このメソッドまたはコンストラクタで AbstractFormatterFactory が明示的に設定されていない場合、AbstractFormatterFactory、そして結果的に AbstractFormatter は値の Class に基づいて使用されます。Number には NumberFormatter、Dates には DateFormatter、それ以外には DefaultFormatter が使用されます。
これは JavaBeans バウンドプロパティです。
tf - AbstractFormatter のインスタンス検索に使用される AbstractFormatterFactorypublic JFormattedTextField.AbstractFormatterFactory getFormatterFactory()
AbstractFormatterFactory を返します。
AbstractFormatter 判定に使用される AbstractFormatterFactorysetFormatterFactory(javax.swing.JFormattedTextField.AbstractFormatterFactory)protected void setFormatter(JFormattedTextField.AbstractFormatter format)
AbstractFormatter を設定します。
通常、AbstractFormatter を呼び出す代わりに、AbstractFormatterFactory またはその値を設定します。JFormattedTextField は、これを JFormattedTextField 変更の状態として呼び出し、値のリセットを要求します。JFormattedTextField は AbstractFormatterFactory から取得した AbstractFormatter を渡します。
これは JavaBeans バウンドプロパティです。
format - フォーマットで使用される AbstractFormattersetFormatterFactory(javax.swing.JFormattedTextField.AbstractFormatterFactory)public JFormattedTextField.AbstractFormatter getFormatter()
AbstractFormatter を返します。
public void setValue(Object value)
AbstractFormatterFactory から取得した AbstractFormatter でフォーマットされる値を設定します。AbstractFormatterFactory が指定されていない場合は、value. のタイプに基づいて AbstractFormatter の生成を試みます。
このプロパティのデフォルト値は null です。
これは JavaBeans バウンドプロパティです。
public Object getValue()
AbstractFormatter の編集ポリシーに基づいて、現在の値が返されない場合があります。現在編集されている値は getValue のあと commitEdit を呼び出すことによって取得できます。
public void commitEdit()
throws ParseException
AbstractFormatter から強制的に取得し、現在の値として設定します。AbstractFormatter が現在インストールされていない場合は何も実行しません。
ParseException - AbstractFormatter が現在の値をフォーマットできない場合public boolean isEditValid()
AbstractFormatter で管理されます。この値を public に設定する機能はありません。
protected void invalidEdit()
protected void processFocusEvent(FocusEvent e)
FocusEvent.FOCUS_GAINED や FocusEvent.FOCUS_LOST などの任意のフォーカスイベントを処理します。
Component 内の processFocusEvente - FocusEventFocusEventpublic Action[] getActions()
JTextField 内の getActionspublic String getUIClassID()
JTextField 内の getUIClassIDJComponent.getUIClassID()public void setDocument(Document doc)
JTextField 内の setDocumentdoc - 表示または編集するドキュメントJTextComponent.getDocument()
|
JavaTM 2 Platform Std. Ed. v1.4.0 |
||||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | ||||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | ||||||||||
Java、Java 2D、および JDBC は米国ならびにその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2002 Sun Microsystems, Inc. 901 San Antonio Road
Palo Alto, California, 94303, U.S.A. All Rights Reserved.