Package com.toedter.calendar
Class JTextFieldDateEditor
- java.lang.Object
-
- java.awt.Component
-
- java.awt.Container
-
- javax.swing.JComponent
-
- javax.swing.text.JTextComponent
-
- javax.swing.JTextField
-
- javax.swing.JFormattedTextField
-
- com.toedter.calendar.JTextFieldDateEditor
-
- All Implemented Interfaces:
IDateEditor
,java.awt.event.ActionListener
,java.awt.event.FocusListener
,java.awt.image.ImageObserver
,java.awt.MenuContainer
,java.io.Serializable
,java.util.EventListener
,javax.accessibility.Accessible
,javax.swing.event.CaretListener
,javax.swing.Scrollable
,javax.swing.SwingConstants
public class JTextFieldDateEditor extends javax.swing.JFormattedTextField implements IDateEditor, javax.swing.event.CaretListener, java.awt.event.FocusListener, java.awt.event.ActionListener
JTextFieldDateEditor is the default editor used by JDateChooser. It is a formatted text field, that colores valid dates green/black and invalid dates red. The date format patten and mask can be set manually. If not set, the MEDIUM pattern of a SimpleDateFormat with regards to the actual locale is used.- Version:
- $LastChangedRevision: 97 $, $LastChangedDate: 2006-05-24 17:30:41 +0200 (Mi, 24 Mai 2006) $
- Author:
- Kai Toedter
- See Also:
- Serialized Form
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class javax.swing.JFormattedTextField
javax.swing.JFormattedTextField.AbstractFormatter, javax.swing.JFormattedTextField.AbstractFormatterFactory
-
Nested classes/interfaces inherited from class javax.swing.JTextField
javax.swing.JTextField.AccessibleJTextField
-
Nested classes/interfaces inherited from class javax.swing.text.JTextComponent
javax.swing.text.JTextComponent.AccessibleJTextComponent, javax.swing.text.JTextComponent.DropLocation, javax.swing.text.JTextComponent.KeyBinding
-
Nested classes/interfaces inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
-
-
Field Summary
Fields Modifier and Type Field Description protected java.awt.Color
darkGreen
protected java.util.Date
date
protected java.text.SimpleDateFormat
dateFormatter
protected java.lang.String
datePattern
protected DateUtil
dateUtil
protected javax.swing.text.MaskFormatter
maskFormatter
protected java.lang.String
maskPattern
protected char
placeholder
-
Fields inherited from class javax.swing.JFormattedTextField
COMMIT, COMMIT_OR_REVERT, PERSIST, REVERT
-
Fields inherited from class javax.swing.JComponent
listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
-
Fields inherited from class java.awt.Component
accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
-
-
Constructor Summary
Constructors Constructor Description JTextFieldDateEditor()
JTextFieldDateEditor(boolean showMask, java.lang.String datePattern, java.lang.String maskPattern, char placeholder)
JTextFieldDateEditor(java.lang.String datePattern, java.lang.String maskPattern, char placeholder)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
actionPerformed(java.awt.event.ActionEvent e)
Validates the typed date and sets it (only if it is valid).void
caretUpdate(javax.swing.event.CaretEvent event)
After any user input, the value of the textfield is proofed.java.lang.String
createMaskFromDatePattern(java.lang.String datePattern)
Creates a mask from a date pattern.void
focusGained(java.awt.event.FocusEvent e)
void
focusLost(java.awt.event.FocusEvent focusEvent)
java.util.Date
getDate()
Returns the date.java.lang.String
getDateFormatString()
Returns tha date format string.java.util.Date
getMaxSelectableDate()
Gets the minimum selectable date.java.util.Date
getMinSelectableDate()
Gets the maximum selectable date.java.awt.Dimension
getPreferredSize()
Returns the preferred size.javax.swing.JComponent
getUiComponent()
Returns the UI component, e.g.boolean
isMaskVisible()
Returns true, if the mask is visible.static void
main(java.lang.String[] s)
Creates a JFrame with a JCalendar inside and can be used for testing.void
setDate(java.util.Date date)
Sets the date.protected void
setDate(java.util.Date date, boolean firePropertyChange)
Sets the date.void
setDateFormatString(java.lang.String dateFormatString)
Sets the date format string, e.g.void
setEnabled(boolean b)
Enables and disabled the compoment.void
setLocale(java.util.Locale locale)
Sets the locale.void
setMaskVisible(boolean isMaskVisible)
Sets the mask visible.void
setMaxSelectableDate(java.util.Date max)
Sets the maximum selectable date.void
setMinSelectableDate(java.util.Date min)
Sets the minimum selectable date.void
setSelectableDateRange(java.util.Date min, java.util.Date max)
Sets a valid date range for selectable dates.-
Methods inherited from class javax.swing.JFormattedTextField
commitEdit, getActions, getFocusLostBehavior, getFormatter, getFormatterFactory, getUIClassID, getValue, invalidEdit, isEditValid, processFocusEvent, processInputMethodEvent, setDocument, setFocusLostBehavior, setFormatter, setFormatterFactory, setValue
-
Methods inherited from class javax.swing.JTextField
actionPropertyChanged, addActionListener, configurePropertiesFromAction, createActionPropertyChangeListener, createDefaultModel, fireActionPerformed, getAccessibleContext, getAction, getActionListeners, getColumns, getColumnWidth, getHorizontalAlignment, getHorizontalVisibility, getScrollOffset, isValidateRoot, paramString, postActionEvent, removeActionListener, scrollRectToVisible, setAction, setActionCommand, setColumns, setFont, setHorizontalAlignment, setScrollOffset
-
Methods inherited from class javax.swing.text.JTextComponent
addCaretListener, addInputMethodListener, addKeymap, copy, cut, fireCaretUpdate, getCaret, getCaretColor, getCaretListeners, getCaretPosition, getDisabledTextColor, getDocument, getDragEnabled, getDropLocation, getDropMode, getFocusAccelerator, getHighlighter, getInputMethodRequests, getKeymap, getKeymap, getMargin, getNavigationFilter, getPreferredScrollableViewportSize, getPrintable, getScrollableBlockIncrement, getScrollableTracksViewportHeight, getScrollableTracksViewportWidth, getScrollableUnitIncrement, getSelectedText, getSelectedTextColor, getSelectionColor, getSelectionEnd, getSelectionStart, getText, getText, getToolTipText, getUI, isEditable, loadKeymap, modelToView, modelToView2D, moveCaretPosition, paste, print, print, print, read, removeCaretListener, removeKeymap, removeNotify, replaceSelection, restoreComposedText, saveComposedText, select, selectAll, setCaret, setCaretColor, setCaretPosition, setComponentOrientation, setDisabledTextColor, setDragEnabled, setDropMode, setEditable, setFocusAccelerator, setHighlighter, setKeymap, setMargin, setNavigationFilter, setSelectedTextColor, setSelectionColor, setSelectionEnd, setSelectionStart, setText, setUI, updateUI, viewToModel, viewToModel2D, write
-
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, 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, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, 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, setFocusTraversalKeys, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update
-
Methods inherited from class 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, transferFocusDownCycle, validate, validateTree
-
Methods inherited from class 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, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, 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, requestFocus, requestFocus, requestFocusInWindow, resize, resize, setBounds, setBounds, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocation, setLocation, setMixingCutoutShape, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface com.toedter.calendar.IDateEditor
addPropertyChangeListener, addPropertyChangeListener, removePropertyChangeListener, removePropertyChangeListener
-
-
-
-
Field Detail
-
date
protected java.util.Date date
-
dateFormatter
protected java.text.SimpleDateFormat dateFormatter
-
maskFormatter
protected javax.swing.text.MaskFormatter maskFormatter
-
datePattern
protected java.lang.String datePattern
-
maskPattern
protected java.lang.String maskPattern
-
placeholder
protected char placeholder
-
darkGreen
protected java.awt.Color darkGreen
-
dateUtil
protected DateUtil dateUtil
-
-
Constructor Detail
-
JTextFieldDateEditor
public JTextFieldDateEditor()
-
JTextFieldDateEditor
public JTextFieldDateEditor(java.lang.String datePattern, java.lang.String maskPattern, char placeholder)
-
JTextFieldDateEditor
public JTextFieldDateEditor(boolean showMask, java.lang.String datePattern, java.lang.String maskPattern, char placeholder)
-
-
Method Detail
-
getDate
public java.util.Date getDate()
Description copied from interface:IDateEditor
Returns the date.- Specified by:
getDate
in interfaceIDateEditor
- Returns:
- the date
-
setDate
public void setDate(java.util.Date date)
Description copied from interface:IDateEditor
Sets the date. This should be implemented as a bound property, firing the "date" property.- Specified by:
setDate
in interfaceIDateEditor
- Parameters:
date
- the date to set
-
setDate
protected void setDate(java.util.Date date, boolean firePropertyChange)
Sets the date.- Parameters:
date
- the datefirePropertyChange
- true, if the date property should be fired.
-
setDateFormatString
public void setDateFormatString(java.lang.String dateFormatString)
Description copied from interface:IDateEditor
Sets the date format string, e.g. "MM/dd/yy". If the date format string is null or invalid, the date format string will be set to the MEDIUM Simple date format of the current locale.- Specified by:
setDateFormatString
in interfaceIDateEditor
- Parameters:
dateFormatString
- the date format string
-
getDateFormatString
public java.lang.String getDateFormatString()
Description copied from interface:IDateEditor
Returns tha date format string.- Specified by:
getDateFormatString
in interfaceIDateEditor
- Returns:
- the date format string
-
getUiComponent
public javax.swing.JComponent getUiComponent()
Description copied from interface:IDateEditor
Returns the UI component, e.g. the actual JTextField implementing the editor.- Specified by:
getUiComponent
in interfaceIDateEditor
- Returns:
- the UI component
-
caretUpdate
public void caretUpdate(javax.swing.event.CaretEvent event)
After any user input, the value of the textfield is proofed. Depending on being a valid date, the value is colored green or red.- Specified by:
caretUpdate
in interfacejavax.swing.event.CaretListener
- Parameters:
event
- the caret event
-
focusLost
public void focusLost(java.awt.event.FocusEvent focusEvent)
- Specified by:
focusLost
in interfacejava.awt.event.FocusListener
-
focusGained
public void focusGained(java.awt.event.FocusEvent e)
- Specified by:
focusGained
in interfacejava.awt.event.FocusListener
-
setLocale
public void setLocale(java.util.Locale locale)
Description copied from interface:IDateEditor
Sets the locale. Usually this should have impact on the current date format string.- Specified by:
setLocale
in interfaceIDateEditor
- Overrides:
setLocale
in classjava.awt.Component
- Parameters:
locale
- the locale to set
-
createMaskFromDatePattern
public java.lang.String createMaskFromDatePattern(java.lang.String datePattern)
Creates a mask from a date pattern. This is a very simple (and incomplete) implementation thet works only with numbers. A date pattern of "MM/dd/yy" will result in the mask "##/##/##". Probably you want to override this method if it does not fit your needs.- Parameters:
datePattern
- the date pattern- Returns:
- the mask
-
isMaskVisible
public boolean isMaskVisible()
Returns true, if the mask is visible.- Returns:
- true, if the mask is visible
-
setMaskVisible
public void setMaskVisible(boolean isMaskVisible)
Sets the mask visible.- Parameters:
isMaskVisible
- true, if the mask should be visible
-
getPreferredSize
public java.awt.Dimension getPreferredSize()
Returns the preferred size. If a date pattern is set, it is the size the date pattern would take.- Overrides:
getPreferredSize
in classjavax.swing.JTextField
-
actionPerformed
public void actionPerformed(java.awt.event.ActionEvent e)
Validates the typed date and sets it (only if it is valid).- Specified by:
actionPerformed
in interfacejava.awt.event.ActionListener
-
setEnabled
public void setEnabled(boolean b)
Enables and disabled the compoment. It also fixes the background bug 4991597 and sets the background explicitely to a TextField.inactiveBackground.- Specified by:
setEnabled
in interfaceIDateEditor
- Overrides:
setEnabled
in classjavax.swing.JComponent
- Parameters:
b
- true, if the UI component should be enabled.
-
getMaxSelectableDate
public java.util.Date getMaxSelectableDate()
Description copied from interface:IDateEditor
Gets the minimum selectable date.- Specified by:
getMaxSelectableDate
in interfaceIDateEditor
- Returns:
- the minimum selectable date
-
getMinSelectableDate
public java.util.Date getMinSelectableDate()
Description copied from interface:IDateEditor
Gets the maximum selectable date.- Specified by:
getMinSelectableDate
in interfaceIDateEditor
- Returns:
- the maximum selectable date
-
setMaxSelectableDate
public void setMaxSelectableDate(java.util.Date max)
Description copied from interface:IDateEditor
Sets the maximum selectable date.- Specified by:
setMaxSelectableDate
in interfaceIDateEditor
- Parameters:
max
- maximum selectable date
-
setMinSelectableDate
public void setMinSelectableDate(java.util.Date min)
Description copied from interface:IDateEditor
Sets the minimum selectable date.- Specified by:
setMinSelectableDate
in interfaceIDateEditor
- Parameters:
min
- minimum selectable date
-
setSelectableDateRange
public void setSelectableDateRange(java.util.Date min, java.util.Date max)
Description copied from interface:IDateEditor
Sets a valid date range for selectable dates. If max is before min, the default range with no limitation is set.- Specified by:
setSelectableDateRange
in interfaceIDateEditor
- Parameters:
min
- the minimum selectable date or null (then the minimum date should be set to 01\01\0001)max
- the maximum selectable date or null (then the maximum date should be set to 01\01\9999)
-
main
public static void main(java.lang.String[] s)
Creates a JFrame with a JCalendar inside and can be used for testing.- Parameters:
s
- The command line arguments
-
-