|
JavaTM Platform Standard Ed. 6 |
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
java.lang.Objectjava.awt.Component
java.awt.Container
javax.swing.JComponent
javax.swing.text.JTextComponent
javax.swing.JTextField
javax.swing.JFormattedTextField
public class 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 = (JFormattedTextField)input;
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's Threading Policy」を参照してください。
警告: このクラスの直列化されたオブジェクトは、今後の Swing リリースと互換ではなくなる予定です。現在の直列化のサポートは、短期間の運用や、同じバージョンの Swing を実行するアプリケーション間の RMI に適しています。JDK Version 1.4 以降、すべての JavaBeans™ の長期間の運用サポートは、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.DropLocation, JTextComponent.KeyBinding |
| クラス javax.swing.JComponent から継承された入れ子のクラス/インタフェース |
|---|
JComponent.AccessibleJComponent |
| クラス java.awt.Container から継承された入れ子のクラス/インタフェース |
|---|
Container.AccessibleAWTContainer |
| クラス java.awt.Component から継承された入れ子のクラス/インタフェース |
|---|
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, 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 などの任意のフォーカスイベントを処理します。 |
protected void |
processInputMethodEvent(InputMethodEvent e)
InputMethodEvent.INPUT_METHOD_TEXT_CHANGED や InputMethodEvent.CARET_POSITION_CHANGED などの任意のインプットメソッドイベントを処理します。 |
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 を生成します。特定の型の値を編集するように JFormattedTextField を設定する場合は、setMask または setFormatterFactory を使用してください。
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 バウンドプロパティーです。
value - 表示される現在の値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 processInputMethodEvent(InputMethodEvent e)
InputMethodEvent.INPUT_METHOD_TEXT_CHANGED や InputMethodEvent.CARET_POSITION_CHANGED などの任意のインプットメソッドイベントを処理します。
JTextComponent 内の processInputMethodEvente - InputMethodEventInputMethodEventprotected 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 Platform Standard Ed. 6 |
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
Copyright 2009 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。