|
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
- フォーマットに使用される AbstractFormatterFactorypublic JFormattedTextField(JFormattedTextField.AbstractFormatterFactory factory, Object currentValue)
AbstractFormatterFactory
と初期値を使用して JFormattedTextField
を生成します。
factory
- フォーマットに使用される AbstractFormatterFactory
currentValue
- 使用される初期値メソッドの詳細 |
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
のインスタンス検索に使用される AbstractFormatterFactory
public JFormattedTextField.AbstractFormatterFactory getFormatterFactory()
AbstractFormatterFactory
を返します。
AbstractFormatter
判定に使用される AbstractFormatterFactory
setFormatterFactory(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
内の processFocusEvent
e
- FocusEvent
FocusEvent
public Action[] getActions()
JTextField
内の getActions
public String getUIClassID()
JTextField
内の getUIClassID
JComponent.getUIClassID()
public void setDocument(Document doc)
JTextField
内の setDocument
doc
- 表示または編集するドキュメント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.