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 に適しています。JDK バージョン 1.4 以降は、java.beans
パッケージですべての JavaBeans™ の長期記憶がサポートされます。XMLEncoder
を参照してください。
- 導入されたバージョン:
- 1.4
フィールドの概要 |
static int |
COMMIT
フォーカス喪失時に commitEdit を呼び出すことを指定する定数です。 |
static int |
COMMIT_OR_REVERT
フォーカス喪失時に commitEdit を呼び出すことを指定する定数です。 |
static int |
PERSIST
フォーカス喪失時に編集されている値を残しておくことを指定する定数です。 |
static int |
REVERT
フォーカス喪失時に、編集中の値を JFormattedTextField の現在の値セットに戻すことを指定する定数です。 |
インタフェース 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 |
クラス javax.swing.JTextField から継承されたメソッド |
addActionListener, configurePropertiesFromAction, createActionPropertyChangeListener, createDefaultModel, fireActionPerformed, getAccessibleContext, getAction, getActionListeners, getColumns, getColumnWidth, getHorizontalAlignment, getHorizontalVisibility, getPreferredSize, getScrollOffset, isValidateRoot, paramString, postActionEvent, removeActionListener, scrollRectToVisible, setAction, setActionCommand, setColumns, setFont, setHorizontalAlignment, setScrollOffset |
クラス javax.swing.text.JTextComponent から継承されたメソッド |
addCaretListener, addInputMethodListener, addKeymap, copy, cut, fireCaretUpdate, getCaret, getCaretColor, getCaretListeners, getCaretPosition, getDisabledTextColor, getDocument, getDragEnabled, getFocusAccelerator, getHighlighter, getInputMethodRequests, getKeymap, getKeymap, getMargin, getNavigationFilter, getPreferredScrollableViewportSize, getScrollableBlockIncrement, getScrollableTracksViewportHeight, getScrollableTracksViewportWidth, getScrollableUnitIncrement, getSelectedText, getSelectedTextColor, getSelectionColor, getSelectionEnd, getSelectionStart, getText, getText, getToolTipText, getUI, isEditable, loadKeymap, modelToView, moveCaretPosition, paste, read, removeCaretListener, removeKeymap, removeNotify, replaceSelection, select, selectAll, setCaret, setCaretColor, setCaretPosition, setComponentOrientation, setDisabledTextColor, setDragEnabled, setEditable, setFocusAccelerator, setHighlighter, setKeymap, setMargin, setNavigationFilter, setSelectedTextColor, setSelectionColor, setSelectionEnd, setSelectionStart, setText, setUI, updateUI, viewToModel, write |
クラス javax.swing.JComponent から継承されたメソッド |
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingTile, isRequestFocusEnabled, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update |
クラス java.awt.Container から継承されたメソッド |
add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusBackward, transferFocusDownCycle, validate, validateTree |
クラス java.awt.Component から継承されたメソッド |
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processHierarchyBoundsEvent, processHierarchyEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusUpCycle |
COMMIT
public static final int COMMIT
- フォーカス喪失時に
commitEdit
を呼び出すことを指定する定数です。新しい値の確定時に ParseException
がスローされると、無効な値がそのまま残ることになります。
- 関連項目:
setFocusLostBehavior(int)
,
定数フィールド値
COMMIT_OR_REVERT
public static final int COMMIT_OR_REVERT
- フォーカス喪失時に
commitEdit
を呼び出すことを指定する定数です。新しい値の確定時に ParseException
がスローされると、元の値に戻されます。
- 関連項目:
setFocusLostBehavior(int)
,
定数フィールド値
REVERT
public static final int REVERT
- フォーカス喪失時に、編集中の値を
JFormattedTextField
の現在の値セットに戻すことを指定する定数です。
- 関連項目:
setFocusLostBehavior(int)
,
定数フィールド値
PERSIST
public static final int PERSIST
- フォーカス喪失時に編集されている値を残しておくことを指定する定数です。
- 関連項目:
setFocusLostBehavior(int)
,
定数フィールド値
JFormattedTextField
public JFormattedTextField()
AbstractFormatterFactory
を使用しないで JFormattedTextField
を生成します。特定の型の値を編集するように JFormattedTextField
を設定する場合は、setMask
または setFormatterFactory
を使用してください。
JFormattedTextField
public JFormattedTextField(Object value)
- 指定された値を使用して JFormattedTextField を生成します。
value
の型に基づいた AbstractFormatterFactory
が生成されます。
- パラメータ:
value
- JformattedTextField の初期値
JFormattedTextField
public JFormattedTextField(Format format)
JFormattedTextField
を生成します。format
は適切な AbstractFormatter
にラップされ、AbstractFormatter
は AbstractFormatterFactory
にラップされます。
- パラメータ:
format
- AbstractFormatter の検索に使用されるフォーマット
JFormattedTextField
public JFormattedTextField(JFormattedTextField.AbstractFormatter formatter)
- 指定された
AbstractFormatter
を使用して JFormattedTextField
を生成します。AbstractFormatter
は AbstractFormatterFactory
に配置されます。
- パラメータ:
formatter
- フォーマットで使用される AbstractFormatter
JFormattedTextField
public JFormattedTextField(JFormattedTextField.AbstractFormatterFactory factory)
- 指定された
AbstractFormatterFactory
を使用して JFormattedTextField
を生成します。
- パラメータ:
factory
- フォーマットに使用される AbstractFormatterFactory
JFormattedTextField
public JFormattedTextField(JFormattedTextField.AbstractFormatterFactory factory,
Object currentValue)
- 指定された
AbstractFormatterFactory
と初期値を使用して JFormattedTextField
を生成します。
- パラメータ:
factory
- フォーマットに使用される AbstractFormatterFactory
currentValue
- 使用される初期値
setFocusLostBehavior
public void setFocusLostBehavior(int behavior)
- フォーカス喪失時の動作を設定します。値は
JFormattedTextField.COMMIT_OR_REVERT
、JFormattedTextField.REVERT
、JFormattedTextField.COMMIT
、または JFormattedTextField.PERSIST
のどれかになります。AbstractFormatter
のなかには、変更発生時に変更をプッシュするものがあります。そのため、この値は動作に影響を与えません。
渡されるオブジェクトの値が前述の値でない場合は IllegalArgumentException
がスローされます。
このプロパティのデフォルト値は JFormattedTextField.COMMIT_OR_REVERT
です。
- パラメータ:
behavior
- フォーカス喪失時の動作
- 例外:
IllegalArgumentException
- 動作が指定された値で示されるものでない場合
getFocusLostBehavior
public int getFocusLostBehavior()
- フォーカス喪失時の動作を返します。
COMMIT_OR_REVERT
、COMMIT
、REVERT
、または PERSIST
のどれかです。AbstractFormatter
のなかには、変更発生時に変更をプッシュするものがあります。そのため、この値は動作には影響を与えません。
- 戻り値:
- フォーカス喪失時の動作
setFormatterFactory
public void setFormatterFactory(JFormattedTextField.AbstractFormatterFactory tf)
AbstractFormatterFactory
を設定します。AbstractFormatterFactory
は、表示値のフォーマット、および編集ポリシー強化に使用される AbstractFormatter
のインスタンスを返すことができます。
このメソッドまたはコンストラクタで AbstractFormatterFactory
が明示的に設定されていない場合、AbstractFormatterFactory
、そして結果的に AbstractFormatter
は値の Class
に基づいて使用されます。Number
には NumberFormatter
、Dates
には DateFormatter
、それ以外には DefaultFormatter
が使用されます。
これは JavaBeans バウンドプロパティです。
- パラメータ:
tf
- AbstractFormatter
のインスタンス検索に使用される AbstractFormatterFactory
getFormatterFactory
public JFormattedTextField.AbstractFormatterFactory getFormatterFactory()
- 現在の
AbstractFormatterFactory
を返します。
- 戻り値:
AbstractFormatter
判定に使用される AbstractFormatterFactory
- 関連項目:
setFormatterFactory(javax.swing.JFormattedTextField.AbstractFormatterFactory)
setFormatter
protected void setFormatter(JFormattedTextField.AbstractFormatter format)
- 現在の
AbstractFormatter
を設定します。
通常、AbstractFormatter
を呼び出す代わりに、AbstractFormatterFactory
またはその値を設定します。JFormattedTextField
は、これを JFormattedTextField
変更の状態として呼び出し、値のリセットを要求します。JFormattedTextField
は AbstractFormatterFactory
から取得した AbstractFormatter
を渡します。
これは JavaBeans バウンドプロパティです。
- パラメータ:
format
- フォーマットで使用される AbstractFormatter- 関連項目:
setFormatterFactory(javax.swing.JFormattedTextField.AbstractFormatterFactory)
getFormatter
public JFormattedTextField.AbstractFormatter getFormatter()
- 現在の値のフォーマットと構文解析に使用される
AbstractFormatter
を返します。
- 戻り値:
- フォーマットに使用される AbstractFormatter
setValue
public void setValue(Object value)
- 現在の
AbstractFormatterFactory
から取得した AbstractFormatter
でフォーマットされる値を設定します。AbstractFormatterFactory
が指定されていない場合は、value
の型に基づいて AbstractFormatter
の生成を試みます。
このプロパティのデフォルト値は null です。
これは JavaBeans バウンドプロパティです。
- パラメータ:
value
- 表示される現在の値
getValue
public Object getValue()
- 最新の有効な値を返します。
AbstractFormatter
の編集ポリシーに基づいて、現在の値が返されない場合があります。現在編集されている値は getValue
のあと commitEdit
を呼び出すことによって取得できます。
- 戻り値:
- 最新の有効な値
commitEdit
public void commitEdit()
throws ParseException
- 現在の値を
AbstractFormatter
から強制的に取得し、現在の値として設定します。AbstractFormatter
が現在インストールされていない場合は何も実行しません。
- 例外:
ParseException
- AbstractFormatter
が現在の値をフォーマットできない場合
isEditValid
public boolean isEditValid()
- 現在編集中の値が有効な場合に true を返します。この値は現在の
AbstractFormatter
で管理されます。この値を public に設定する機能はありません。
- 戻り値:
- 現在編集中の値が有効な場合は true
invalidEdit
protected void invalidEdit()
- ユーザが無効な値を入力した場合に呼び出されます。これにより、コンポーネントのフィードバックが実行可能になります。デフォルト実装ではビープ音を出します。
processInputMethodEvent
protected void processInputMethodEvent(InputMethodEvent e)
InputMethodEvent.INPUT_METHOD_TEXT_CHANGED
や InputMethodEvent.CARET_POSITION_CHANGED
などの任意のインプットメソッドイベントを処理します。
- オーバーライド:
- クラス
JTextComponent
内の processInputMethodEvent
- パラメータ:
e
- InputMethodEvent
- 関連項目:
InputMethodEvent
processFocusEvent
protected void processFocusEvent(FocusEvent e)
FocusEvent.FOCUS_GAINED
や FocusEvent.FOCUS_LOST
などの任意のフォーカスイベントを処理します。
- オーバーライド:
- クラス
Component
内の processFocusEvent
- パラメータ:
e
- FocusEvent
- 関連項目:
FocusEvent
getActions
public Action[] getActions()
- エディタのコマンドリストを返します。これは、エディタ自身がサポートするコマンドコレクションで拡張された、プラグイン済み UI によってサポートされるコマンドのリストです。これらは、キーマップ内でのように、イベントへの割り当てに役立ちます。
- オーバーライド:
- クラス
JTextField
内の getActions
- 戻り値:
- コマンドリスト
getUIClassID
public String getUIClassID()
- UI のクラス ID を返します。
- オーバーライド:
- クラス
JTextField
内の getUIClassID
- 戻り値:
- FormattedTextFieldUIの文字列
- 関連項目:
JComponent.getUIClassID()
setDocument
public void setDocument(Document doc)
- エディタをテキストドキュメントに関連付けます。現在登録されているファクトリを使うと、ドキュメントのビューを構築できます。このドキュメントは、再検証後にエディタによって表示されます。PropertyChange イベント (document) は、各リスナーに通知されます。
- オーバーライド:
- クラス
JTextField
内の setDocument
- パラメータ:
doc
- 表示および編集するドキュメント- 関連項目:
JTextComponent.getDocument()
バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java 2 SDK SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。