com.toedter.calendar

Class JTextFieldDateEditor

Implemented Interfaces:
ActionListener, CaretListener, FocusListener, IDateEditor

public class JTextFieldDateEditor
extends JFormattedTextField
implements IDateEditor, CaretListener, FocusListener, 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

Field Summary

protected Color
darkGreen
protected Date
date
protected SimpleDateFormat
dateFormatter
protected String
datePattern
protected DateUtil
dateUtil
protected MaskFormatter
maskFormatter
protected String
maskPattern
protected char
placeholder

Constructor Summary

JTextFieldDateEditor()
JTextFieldDateEditor(String datePattern, String maskPattern, char placeholder)
JTextFieldDateEditor(boolean showMask, String datePattern, String maskPattern, char placeholder)

Method Summary

void
actionPerformed(ActionEvent e)
Validates the typed date and sets it (only if it is valid).
void
caretUpdate(CaretEvent event)
After any user input, the value of the textfield is proofed.
String
createMaskFromDatePattern(String datePattern)
Creates a mask from a date pattern.
void
focusGained(FocusEvent e)
void
focusLost(FocusEvent focusEvent)
Date
getDate()
Returns the date.
String
getDateFormatString()
Returns tha date format string.
Date
getMaxSelectableDate()
Gets the minimum selectable date.
Date
getMinSelectableDate()
Gets the maximum selectable date.
Dimension
getPreferredSize()
Returns the preferred size.
JComponent
getUiComponent()
Returns the UI component, e.g.
boolean
isMaskVisible()
Returns true, if the mask is visible.
static void
main(String[] s)
Creates a JFrame with a JCalendar inside and can be used for testing.
void
setDate(Date date)
Sets the date.
protected void
setDate(Date date, boolean firePropertyChange)
Sets the date.
void
setDateFormatString(String dateFormatString)
Sets the date format string, e.g.
void
setEnabled(boolean b)
Enables and disabled the compoment.
void
setLocale(Locale locale)
Sets the locale.
void
setMaskVisible(boolean isMaskVisible)
Sets the mask visible.
void
setMaxSelectableDate(Date max)
Sets the maximum selectable date.
void
setMinSelectableDate(Date min)
Sets the minimum selectable date.
void
setSelectableDateRange(Date min, Date max)
Sets a valid date range for selectable dates.

Field Details

darkGreen

protected Color darkGreen

date

protected Date date

dateFormatter

protected SimpleDateFormat dateFormatter

datePattern

protected String datePattern

dateUtil

protected DateUtil dateUtil

maskFormatter

protected MaskFormatter maskFormatter

maskPattern

protected String maskPattern

placeholder

protected char placeholder

Constructor Details

JTextFieldDateEditor

public JTextFieldDateEditor()

JTextFieldDateEditor

public JTextFieldDateEditor(String datePattern,
                            String maskPattern,
                            char placeholder)

JTextFieldDateEditor

public JTextFieldDateEditor(boolean showMask,
                            String datePattern,
                            String maskPattern,
                            char placeholder)

Method Details

actionPerformed

public void actionPerformed(ActionEvent e)
Validates the typed date and sets it (only if it is valid).

caretUpdate

public void caretUpdate(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.
Parameters:
event - the caret event

createMaskFromDatePattern

public String createMaskFromDatePattern(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

focusGained

public void focusGained(FocusEvent e)

focusLost

public void focusLost(FocusEvent focusEvent)

getDate

public Date getDate()
Returns the date.
Specified by:
getDate in interface IDateEditor
Returns:
the date

getDateFormatString

public String getDateFormatString()
Returns tha date format string.
Specified by:
getDateFormatString in interface IDateEditor
Returns:
the date format string

getMaxSelectableDate

public Date getMaxSelectableDate()
Gets the minimum selectable date.
Specified by:
getMaxSelectableDate in interface IDateEditor
Returns:
the minimum selectable date

getMinSelectableDate

public Date getMinSelectableDate()
Gets the maximum selectable date.
Specified by:
getMinSelectableDate in interface IDateEditor
Returns:
the maximum selectable date

getPreferredSize

public Dimension getPreferredSize()
Returns the preferred size. If a date pattern is set, it is the size the date pattern would take.

getUiComponent

public JComponent getUiComponent()
Returns the UI component, e.g. the actual JTextField implementing the editor.
Specified by:
getUiComponent in interface IDateEditor
Returns:
the UI component

isMaskVisible

public boolean isMaskVisible()
Returns true, if the mask is visible.
Returns:
true, if the mask is visible

main

public static void main(String[] s)
Creates a JFrame with a JCalendar inside and can be used for testing.
Parameters:
s - The command line arguments

setDate

public void setDate(Date date)
Sets the date. This should be implemented as a bound property, firing the "date" property.
Specified by:
setDate in interface IDateEditor
Parameters:
date - the date to set

setDate

protected void setDate(Date date,
                       boolean firePropertyChange)
Sets the date.
Parameters:
date - the date
firePropertyChange - true, if the date property should be fired.

setDateFormatString

public void setDateFormatString(String dateFormatString)
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 interface IDateEditor
Parameters:
dateFormatString - the date format string

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 interface IDateEditor

setLocale

public void setLocale(Locale locale)
Sets the locale. Usually this should have impact on the current date format string.
Specified by:
setLocale in interface IDateEditor
Parameters:
locale - the locale to set

setMaskVisible

public void setMaskVisible(boolean isMaskVisible)
Sets the mask visible.
Parameters:
isMaskVisible - true, if the mask should be visible

setMaxSelectableDate

public void setMaxSelectableDate(Date max)
Sets the maximum selectable date.
Specified by:
setMaxSelectableDate in interface IDateEditor
Parameters:
max - maximum selectable date

setMinSelectableDate

public void setMinSelectableDate(Date min)
Sets the minimum selectable date.
Specified by:
setMinSelectableDate in interface IDateEditor
Parameters:
min - minimum selectable date

setSelectableDateRange

public void setSelectableDateRange(Date min,
                                   Date max)
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 interface IDateEditor
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)

Copyright B) 1999 - 2006 Kai Toedter.