Class JFormattedTextField.AbstractFormatter

java.lang.Object
javax.swing.JFormattedTextField.AbstractFormatter
All Implemented Interfaces:
Serializable
Direct Known Subclasses:
DefaultFormatter
Enclosing class:
JFormattedTextField

public abstract static class JFormattedTextField.AbstractFormatter extends Object implements Serializable
Instances of AbstractFormatter are used by JFormattedTextField to handle the conversion both from an Object to a String, and back from a String to an Object. AbstractFormatters can also enforce editing policies, or navigation policies, or manipulate the JFormattedTextField in any way it sees fit to enforce the desired policy.

An AbstractFormatter can only be active in one JFormattedTextField at a time. JFormattedTextField invokes install when it is ready to use it followed by uninstall when done. Subclasses that wish to install additional state should override install and message super appropriately.

Subclasses must override the conversion methods stringToValue and valueToString. Optionally they can override getActions, getNavigationFilter and getDocumentFilter to restrict the JFormattedTextField in a particular way.

Subclasses that allow the JFormattedTextField to be in a temporarily invalid state should invoke setEditValid at the appropriate times.

Since:
1.4
  • Constructor Summary

    Constructors
    Modifier
    Constructor
    Description
    protected
    Constructor for subclasses to call.
  • Method Summary

    Modifier and Type
    Method
    Description
    protected Object
    Clones the AbstractFormatter.
    protected Action[]
    Subclass and override if you wish to provide a custom set of Actions.
    protected DocumentFilter
    Subclass and override if you wish to provide a DocumentFilter to restrict what can be input.
    Returns the current JFormattedTextField the AbstractFormatter is installed on.
    Subclass and override if you wish to provide a filter to restrict where the user can navigate to.
    void
    Installs the AbstractFormatter onto a particular JFormattedTextField.
    protected void
    This should be invoked when the user types an invalid character.
    protected void
    setEditValid(boolean valid)
    Invoke this to update the editValid property of the JFormattedTextField.
    abstract Object
    Parses text returning an arbitrary Object.
    void
    Uninstalls any state the AbstractFormatter may have installed on the JFormattedTextField.
    abstract String
    Returns the string value to display for value.

    Methods declared in class Object

    equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    Modifier and Type
    Method
    Description
    boolean
    Indicates whether some other object is "equal to" this one.
    protected void
    Deprecated, for removal: This API element is subject to removal in a future version.
    Finalization is deprecated and subject to removal in a future release.
    final Class<?>
    Returns the runtime class of this Object.
    int
    Returns a hash code value for this object.
    final void
    Wakes up a single thread that is waiting on this object's monitor.
    final void
    Wakes up all threads that are waiting on this object's monitor.
    Returns a string representation of the object.
    final void
    Causes the current thread to wait until it is awakened, typically by being notified or interrupted.
    final void
    wait(long timeoutMillis)
    Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.
    final void
    wait(long timeoutMillis, int nanos)
    Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.
  • Constructor Details

    • AbstractFormatter

      protected AbstractFormatter()
      Constructor for subclasses to call.
  • Method Details

    • install

      public void install(JFormattedTextField ftf)
      Installs the AbstractFormatter onto a particular JFormattedTextField. This will invoke valueToString to convert the current value from the JFormattedTextField to a String. This will then install the Actions from getActions, the DocumentFilter returned from getDocumentFilter and the NavigationFilter returned from getNavigationFilter onto the JFormattedTextField.

      Subclasses will typically only need to override this if they wish to install additional listeners on the JFormattedTextField.

      If there is a ParseException in converting the current value to a String, this will set the text to an empty String, and mark the JFormattedTextField as being in an invalid state.

      While this is a public method, this is typically only useful for subclassers of JFormattedTextField. JFormattedTextField will invoke this method at the appropriate times when the value changes, or its internal state changes. You will only need to invoke this yourself if you are subclassing JFormattedTextField and installing/uninstalling AbstractFormatter at a different time than JFormattedTextField does.

      Parameters:
      ftf - JFormattedTextField to format for, may be null indicating uninstall from current JFormattedTextField.
    • uninstall

      public void uninstall()
      Uninstalls any state the AbstractFormatter may have installed on the JFormattedTextField. This resets the DocumentFilter, NavigationFilter and additional Actions installed on the JFormattedTextField.
    • stringToValue

      public abstract Object stringToValue(String text) throws ParseException
      Parses text returning an arbitrary Object. Some formatters may return null.
      Parameters:
      text - String to convert
      Returns:
      Object representation of text
      Throws:
      ParseException - if there is an error in the conversion
    • valueToString

      public abstract String valueToString(Object value) throws ParseException
      Returns the string value to display for value.
      Parameters:
      value - Value to convert
      Returns:
      String representation of value
      Throws:
      ParseException - if there is an error in the conversion
    • getFormattedTextField

      protected JFormattedTextField getFormattedTextField()
      Returns the current JFormattedTextField the AbstractFormatter is installed on.
      Returns:
      JFormattedTextField formatting for.
    • invalidEdit

      protected void invalidEdit()
      This should be invoked when the user types an invalid character. This forwards the call to the current JFormattedTextField.
    • setEditValid

      protected void setEditValid(boolean valid)
      Invoke this to update the editValid property of the JFormattedTextField. If you an enforce a policy such that the JFormattedTextField is always in a valid state, you will never need to invoke this.
      Parameters:
      valid - Valid state of the JFormattedTextField
    • getActions

      protected Action[] getActions()
      Subclass and override if you wish to provide a custom set of Actions. install will install these on the JFormattedTextField's ActionMap.
      Returns:
      Array of Actions to install on JFormattedTextField
    • getDocumentFilter

      protected DocumentFilter getDocumentFilter()
      Subclass and override if you wish to provide a DocumentFilter to restrict what can be input. install will install the returned value onto the JFormattedTextField.
      Implementation Requirements:
      The default implementation returns null.
      Returns:
      DocumentFilter to restrict edits
    • getNavigationFilter

      protected NavigationFilter getNavigationFilter()
      Subclass and override if you wish to provide a filter to restrict where the user can navigate to. install will install the returned value onto the JFormattedTextField.
      Implementation Requirements:
      The default implementation returns null.
      Returns:
      NavigationFilter to restrict navigation
    • clone

      protected Object clone() throws CloneNotSupportedException
      Clones the AbstractFormatter. The returned instance is not associated with a JFormattedTextField.
      Overrides:
      clone in class Object
      Returns:
      Copy of the AbstractFormatter
      Throws:
      CloneNotSupportedException - if the object's class does not support the Cloneable interface. Subclasses that override the clone method can also throw this exception to indicate that an instance cannot be cloned.
      See Also: