declare namespace javax {
namespace swing {
/**
* JFormattedTextField
extends JTextField
adding
* support for formatting arbitrary values, as well as retrieving a particular
* object once the user has edited the text. The following illustrates
* configuring a JFormattedTextField
to edit dates:
*
* JFormattedTextField ftf = new JFormattedTextField(); * ftf.setValue(new Date()); **
* Once a JFormattedTextField
has been created, you can
* listen for editing changes by way of adding
* a PropertyChangeListener
and listening for
* PropertyChangeEvent
s with the property name value
.
*
* JFormattedTextField
allows
* configuring what action should be taken when focus is lost. The possible
* configurations are:
*
Value | Description |
---|---|
JFormattedTextField.REVERT * | Revert the display to match that of getValue ,
* possibly losing the current edit.
* |
JFormattedTextField.COMMIT * | Commits the current value. If the value being edited
* isn't considered a legal value by the
* AbstractFormatter that is, a
* ParseException is thrown, then the value
* will not change, and then edited value will persist.
* |
JFormattedTextField.COMMIT_OR_REVERT * | Similar to COMMIT , but if the value isn't
* legal, behave like REVERT .
* |
JFormattedTextField.PERSIST * | Do nothing, don't obtain a new
* AbstractFormatter , and don't update the value.
* |
JFormattedTextField.COMMIT_OR_REVERT
,
* refer to {@link #setFocusLostBehavior} for more information on this.
*
* JFormattedTextField
allows the focus to leave, even if
* the currently edited value is invalid. To lock the focus down while the
* JFormattedTextField
is an invalid edit state
* you can attach an InputVerifier
. The following code snippet
* shows a potential implementation of such an 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); * } * } **
* Alternatively, you could invoke commitEdit
, which would also
* commit the value.
*
* JFormattedTextField
does not do the formatting it self,
* rather formatting is done through an instance of
* JFormattedTextField.AbstractFormatter
which is obtained from
* an instance of JFormattedTextField.AbstractFormatterFactory
.
* Instances of JFormattedTextField.AbstractFormatter
are
* notified when they become active by way of the
* install
method, at which point the
* JFormattedTextField.AbstractFormatter
can install whatever
* it needs to, typically a DocumentFilter
. Similarly when
* JFormattedTextField
no longer
* needs the AbstractFormatter
, it will invoke
* uninstall
.
*
* JFormattedTextField
typically
* queries the AbstractFormatterFactory
for an
* AbstractFormat
when it gains or loses focus. Although this
* can change based on the focus lost policy. If the focus lost
* policy is JFormattedTextField.PERSIST
* and the JFormattedTextField
has been edited, the
* AbstractFormatterFactory
will not be queried until the
* value has been committed. Similarly if the focus lost policy is
* JFormattedTextField.COMMIT
and an exception
* is thrown from stringToValue
, the
* AbstractFormatterFactory
will not be queried when focus is
* lost or gained.
*
* JFormattedTextField.AbstractFormatter
* is also responsible for determining when values are committed to
* the JFormattedTextField
. Some
* JFormattedTextField.AbstractFormatter
s will make new values
* available on every edit, and others will never commit the value. You can
* force the current value to be obtained
* from the current JFormattedTextField.AbstractFormatter
* by way of invoking commitEdit
. commitEdit
will
* be invoked whenever return is pressed in the
* JFormattedTextField
.
*
* If an AbstractFormatterFactory
has not been explicitly
* set, one will be set based on the Class
of the value type after
* setValue
has been invoked (assuming value is non-null).
* For example, in the following code an appropriate
* AbstractFormatterFactory
and AbstractFormatter
* will be created to handle formatting of numbers:
*
* JFormattedTextField tf = new JFormattedTextField(); * tf.setValue(100); **
* Warning: As the AbstractFormatter
will
* typically install a DocumentFilter
on the
* Document
, and a NavigationFilter
on the
* JFormattedTextField
you should not install your own. If you do,
* you are likely to see odd behavior in that the editing policy of the
* AbstractFormatter
will not be enforced.
*
* Warning: Swing is not thread safe. For more * information see Swing's Threading * Policy. *
* Warning:
* Serialized objects of this class will not be compatible with
* future Swing releases. The current serialization support is
* appropriate for short term storage or RMI between applications running
* the same version of Swing. As of 1.4, support for long term storage
* of all JavaBeans™
* has been added to the java.beans
package.
* Please see {@link java.beans.XMLEncoder}.
* @since 1.4
*/
// @ts-ignore
class JFormattedTextField extends javax.swing.JTextField {
/**
* Creates a JFormattedTextField
with no
* AbstractFormatterFactory
. Use setMask
or
* setFormatterFactory
to configure the
* JFormattedTextField
to edit a particular type of
* value.
*/
// @ts-ignore
constructor()
/**
* Creates a JFormattedTextField with the specified value. This will
* create an AbstractFormatterFactory
based on the
* type of value
.
* @param value Initial value for the JFormattedTextField
*/
// @ts-ignore
constructor(value: java.lang.Object | any)
/**
* Creates a JFormattedTextField
. format
is
* wrapped in an appropriate AbstractFormatter
which is
* then wrapped in an AbstractFormatterFactory
.
* @param format Format used to look up an AbstractFormatter
*/
// @ts-ignore
constructor(format: java.text.Format)
/**
* Creates a JFormattedTextField
with the specified
* AbstractFormatter
. The AbstractFormatter
* is placed in an AbstractFormatterFactory
.
* @param formatter AbstractFormatter to use for formatting.
*/
// @ts-ignore
constructor(formatter: javax.swing.JFormattedTextField.AbstractFormatter)
/**
* Creates a JFormattedTextField
with the specified
* AbstractFormatterFactory
.
* @param factory AbstractFormatterFactory used for formatting.
*/
// @ts-ignore
constructor(factory: javax.swing.JFormattedTextField.AbstractFormatterFactory)
/**
* Creates a JFormattedTextField
with the specified
* AbstractFormatterFactory
and initial value.
* @param factory AbstractFormatterFactory
used for
* formatting.
* @param currentValue Initial value to use
*/
// @ts-ignore
constructor(factory: javax.swing.JFormattedTextField.AbstractFormatterFactory, currentValue: java.lang.Object | any)
/**
* Constant identifying that when focus is lost,
* commitEdit
should be invoked. If in committing the
* new value a ParseException
is thrown, the invalid
* value will remain.
* @see #setFocusLostBehavior
*/
// @ts-ignore
public static readonly COMMIT: number /*int*/
/**
* Constant identifying that when focus is lost,
* commitEdit
should be invoked. If in committing the new
* value a ParseException
is thrown, the value will be
* reverted.
* @see #setFocusLostBehavior
*/
// @ts-ignore
public static readonly COMMIT_OR_REVERT: number /*int*/
/**
* Constant identifying that when focus is lost, editing value should
* be reverted to current value set on the
* JFormattedTextField
.
* @see #setFocusLostBehavior
*/
// @ts-ignore
public static readonly REVERT: number /*int*/
/**
* Constant identifying that when focus is lost, the edited value
* should be left.
* @see #setFocusLostBehavior
*/
// @ts-ignore
public static readonly PERSIST: number /*int*/
/**
* Sets the behavior when focus is lost. This will be one of
* JFormattedTextField.COMMIT_OR_REVERT
,
* JFormattedTextField.REVERT
,
* JFormattedTextField.COMMIT
or
* JFormattedTextField.PERSIST
* Note that some AbstractFormatter
s may push changes as
* they occur, so that the value of this will have no effect.
*
* This will throw an IllegalArgumentException
if the object
* passed in is not one of the afore mentioned values.
*
* The default value of this property is
* JFormattedTextField.COMMIT_OR_REVERT
.
* @param behavior Identifies behavior when focus is lost
* @throws IllegalArgumentException if behavior is not one of the known
* values
* @beaninfo enum: COMMIT JFormattedTextField.COMMIT
* COMMIT_OR_REVERT JFormattedTextField.COMMIT_OR_REVERT
* REVERT JFormattedTextField.REVERT
* PERSIST JFormattedTextField.PERSIST
* description: Behavior when component loses focus
*/
// @ts-ignore
public setFocusLostBehavior(behavior: number /*int*/): void
/**
* Returns the behavior when focus is lost. This will be one of
* COMMIT_OR_REVERT
,
* COMMIT
,
* REVERT
or
* PERSIST
* Note that some AbstractFormatter
s may push changes as
* they occur, so that the value of this will have no effect.
* @return returns behavior when focus is lost
*/
// @ts-ignore
public getFocusLostBehavior(): number /*int*/
/**
* Sets the AbstractFormatterFactory
.
* AbstractFormatterFactory
is
* able to return an instance of AbstractFormatter
that is
* used to format a value for display, as well an enforcing an editing
* policy.
*
* If you have not explicitly set an AbstractFormatterFactory
* by way of this method (or a constructor) an
* AbstractFormatterFactory
and consequently an
* AbstractFormatter
will be used based on the
* Class
of the value. NumberFormatter
will
* be used for Number
s, DateFormatter
will
* be used for Dates
, otherwise DefaultFormatter
* will be used.
*
* This is a JavaBeans bound property.
* @param tf AbstractFormatterFactory
used to lookup
* instances of AbstractFormatter
* @beaninfo bound: true
* attribute: visualUpdate true
* description: AbstractFormatterFactory, responsible for returning an
* AbstractFormatter that can format the current value.
*/
// @ts-ignore
public setFormatterFactory(tf: javax.swing.JFormattedTextField.AbstractFormatterFactory): void
/**
* Returns the current AbstractFormatterFactory
.
* @see #setFormatterFactory
* @return AbstractFormatterFactory
used to determine
* AbstractFormatter
s
*/
// @ts-ignore
public getFormatterFactory(): javax.swing.JFormattedTextField.AbstractFormatterFactory
/**
* Sets the current AbstractFormatter
.
*
* You should not normally invoke this, instead set the
* AbstractFormatterFactory
or set the value.
* JFormattedTextField
will
* invoke this as the state of the JFormattedTextField
* changes and requires the value to be reset.
* JFormattedTextField
passes in the
* AbstractFormatter
obtained from the
* AbstractFormatterFactory
.
*
* This is a JavaBeans bound property.
* @see #setFormatterFactory
* @param format AbstractFormatter to use for formatting
* @beaninfo bound: true
* attribute: visualUpdate true
* description: TextFormatter, responsible for formatting the current value
*/
// @ts-ignore
setFormatter(format: javax.swing.JFormattedTextField.AbstractFormatter): void
/**
* Returns the AbstractFormatter
that is used to format and
* parse the current value.
* @return AbstractFormatter used for formatting
*/
// @ts-ignore
public getFormatter(): javax.swing.JFormattedTextField.AbstractFormatter
/**
* Sets the value that will be formatted by an
* AbstractFormatter
obtained from the current
* AbstractFormatterFactory
. If no
* AbstractFormatterFactory
has been specified, this will
* attempt to create one based on the type of value
.
*
* The default value of this property is null. *
* This is a JavaBeans bound property.
* @param value Current value to display
* @beaninfo bound: true
* attribute: visualUpdate true
* description: The value to be formatted.
*/
// @ts-ignore
public setValue(value: java.lang.Object | any): void
/**
* Returns the last valid value. Based on the editing policy of
* the AbstractFormatter
this may not return the current
* value. The currently edited value can be obtained by invoking
* commitEdit
followed by getValue
.
* @return Last valid value
*/
// @ts-ignore
public getValue(): any
/**
* Forces the current value to be taken from the
* AbstractFormatter
and set as the current value.
* This has no effect if there is no current
* AbstractFormatter
installed.
* @throws ParseException if the AbstractFormatter
is not able
* to format the current value
*/
// @ts-ignore
public commitEdit(): void
/**
* Returns true if the current value being edited is valid. The value of
* this is managed by the current AbstractFormatter
, as such
* there is no public setter for it.
* @return true if the current value being edited is valid.
*/
// @ts-ignore
public isEditValid(): boolean
/**
* Invoked when the user inputs an invalid value. This gives the
* component a chance to provide feedback. The default
* implementation beeps.
*/
// @ts-ignore
invalidEdit(): void
/**
* Processes any input method events, such as
* InputMethodEvent.INPUT_METHOD_TEXT_CHANGED
or
* InputMethodEvent.CARET_POSITION_CHANGED
.
* @param e the InputMethodEvent
* @see InputMethodEvent
*/
// @ts-ignore
processInputMethodEvent(e: java.awt.event.InputMethodEvent): void
/**
* Processes any focus events, such as
* FocusEvent.FOCUS_GAINED
or
* FocusEvent.FOCUS_LOST
.
* @param e the FocusEvent
* @see FocusEvent
*/
// @ts-ignore
processFocusEvent(e: java.awt.event.FocusEvent): void
/**
* Fetches the command list for the editor. This is
* the list of commands supported by the plugged-in UI
* augmented by the collection of commands that the
* editor itself supports. These are useful for binding
* to events, such as in a keymap.
* @return the command list
*/
// @ts-ignore
public getActions(): javax.swing.Action[]
/**
* Gets the class ID for a UI.
* @return the string "FormattedTextFieldUI"
* @see JComponent#getUIClassID
*/
// @ts-ignore
public getUIClassID(): string
/**
* Associates the editor with a text document.
* The currently registered factory is used to build a view for
* the document, which gets displayed by the editor after revalidation.
* A PropertyChange event ("document") is propagated to each listener.
* @param doc the document to display/edit
* @see #getDocument
* @beaninfo description: the text document model
* bound: true
* expert: true
*/
// @ts-ignore
public setDocument(doc: javax.swing.text.Document): void
}
}
}