|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectjava.awt.Component
java.awt.Container
javax.swing.JComponent
org.jdesktop.swingx.JXDatePicker
public class JXDatePicker
A component for entering dates with a user interaction similar to a JComboBox. The dates can be typed into a text field or selected from a JXMonthView which opens in a JXPopupMenu on user's request.
The date selection is controlled by the JXMonthView's DateSelectionModel. This allows the use of all its functionality in the JXDatePicker as well. F.i. restrict the selection to a date in the current or next week:
Appointment appointment = new Appointment(director,
"Be sure to have polished shoes!");
JXDatePicker picker = new JXDatePicker();
Calendar calendar = picker.getMonthView().getCalendar();
// starting today if we are in a hurry
calendar.setTime(new Date());
picker.getMonthView().setLowerBound(calendar.getTime());
// end of next week
CalendarUtils.endOfWeek(calendar);
calendar.add(Calendar.WEEK_OF_YEAR);
picker.getMonthView().setUpperBound(calendar.getTime());
Similar to a JXMonthView, the JXDatePicker fires an ActionEvent when the user
actively commits or cancels a selection. Interested client code can add a
ActionListener to be notified by the user action.
JXDatePicker picker = new JXDatePicker(new Date());
ActionListener l = new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (JXDatePicker.COMMIT_KEY.equals(e.getActionCommand)) {
saveDate(picker.getDate());
}
}
};
picker.addActionListener(l);
The DateFormats used in the JXDatePicker's are initialized to the default formats of the DatePickerFormatter, as defined by the picker's resourceBundle DatePicker.properties. Application code can overwrite the picker's default
picker.setDateFormats(myCustomFormat, myAlternativeCustomFormat);
PENDING JW: explain what the alternatives are for (after understanding it
myself ;-)
The selected Date is a bound property of the JXDatePicker. This allows easy binding to a property of a custom bean when using a binding framework.
Keybindings (as installed by the UI-Delegate)
JXMonthView
,
DateSelectionModel
,
DatePickerFormatter
,
Serialized FormNested Class Summary |
---|
Nested classes/interfaces inherited from class javax.swing.JComponent |
---|
JComponent.AccessibleJComponent |
Nested classes/interfaces inherited from class java.awt.Container |
---|
Container.AccessibleAWTContainer |
Nested classes/interfaces inherited from class java.awt.Component |
---|
Component.AccessibleAWTComponent, Component.BltBufferStrategy, Component.FlipBufferStrategy |
Field Summary | |
---|---|
static String |
CANCEL_KEY
action command used for cancel actionEvent. |
static String |
COMMIT_KEY
action command used for commit actionEvent. |
static String |
EDITOR
|
static String |
HOME_COMMIT_KEY
action key for commit home action |
static String |
HOME_NAVIGATE_KEY
action key for navigate home action |
protected boolean |
lightWeightPopupEnabled
|
static String |
LINK_PANEL
|
static String |
MONTH_VIEW
|
static String |
uiClassID
UI Class ID |
Fields inherited from class javax.swing.JComponent |
---|
accessibleContext, 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 |
---|
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT |
Fields inherited from interface java.awt.image.ImageObserver |
---|
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH |
Constructor Summary | |
---|---|
JXDatePicker()
Intantiates a date picker with no selection and the default DatePickerFormatter . |
|
JXDatePicker(Date selected)
Intantiates a date picker using the specified time as the initial selection and the default DatePickerFormatter . |
|
JXDatePicker(Date selection,
Locale locale)
Intantiates a date picker using the specified time as the initial selection and the default DatePickerFormatter . |
|
JXDatePicker(Locale locale)
Intantiates a date picker with no selection and the default DatePickerFormatter . |
Method Summary | ||
---|---|---|
void |
addActionListener(ActionListener l)
Adds an ActionListener. |
|
void |
cancelEdit()
Cancels the editor's changes and notifies ActionListeners. |
|
void |
commitEdit()
Commits the editor's changes and notifies ActionListeners. |
|
protected void |
fireActionPerformed(String actionCommand)
Fires an ActionEvent with the given actionCommand to all listeners. |
|
int |
getBaseline(int width,
int height)
Get the baseline for the specified component, or a value less than 0 if the baseline can not be determined. |
|
Date |
getDate()
Returns the currently selected date. |
|
JFormattedTextField |
getEditor()
Returns the formatted text field used to edit the date selection. |
|
Font |
getFont()
Returns the font that is associated with the editor of this date picker. |
|
DateFormat[] |
getFormats()
Returns an array of the formats used by the installed formatter if it is a subclass of JXDatePickerFormatter |
|
Date |
getLinkDay()
Returns the date shown in the LinkPanel. |
|
protected MessageFormat |
getLinkFormat()
|
|
JPanel |
getLinkPanel()
Return the panel that is used at the bottom of the popup. |
|
|
getListeners(Class<T> listenerType)
Returns an array of all the objects currently registered as FooListener s
upon this JComponent . |
|
JXMonthView |
getMonthView()
Return the JXMonthView used in the popup to
select dates from. |
|
TimeZone |
getTimeZone()
Gets the time zone. |
|
DatePickerUI |
getUI()
Returns the look and feel (L&F) object that renders this component. |
|
String |
getUIClassID()
Returns the UIDefaults key used to
look up the name of the swing.plaf.ComponentUI
class that defines the look and feel
for this component. |
|
boolean |
isEditable()
Returns the editable property. |
|
boolean |
isEditValid()
Returns true if the current value being edited is valid. |
|
boolean |
isLightWeightPopupEnabled()
Gets the value of the lightWeightPopupEnabled
property. |
|
void |
removeActionListener(ActionListener l)
Removes an ActionListener. |
|
void |
setComponentOrientation(ComponentOrientation orientation)
Sets the language-sensitive orientation that is to be used to order the elements or text within this component. |
|
void |
setDate(Date date)
Sets the date property. |
|
void |
setEditable(boolean value)
Sets the editable property. |
|
void |
setEditor(JFormattedTextField editor)
Sets the editor. |
|
void |
setFont(Font font)
Set the font for the editor associated with this date picker. |
|
void |
setFormats(DateFormat... formats)
Replaces the currently installed formatter and factory used by the editor. |
|
void |
setFormats(String... formats)
Replaces the currently installed formatter and factory used by the editor. |
|
void |
setLightWeightPopupEnabled(boolean aFlag)
Sets the lightWeightPopupEnabled property, which
provides a hint as to whether or not a lightweight
Component should be used to contain the
JXDatePicker , versus a heavyweight
Component such as a Panel
or a Window . |
|
void |
setLinkDay(Date linkDay)
Sets the date shown in the TodayPanel. |
|
void |
setLinkDay(Date linkDay,
String linkFormatString)
Set the date the link will use and the string defining a MessageFormat to format the link. |
|
protected void |
setLinkFormat(MessageFormat _linkFormat)
|
|
void |
setLinkPanel(JPanel linkPanel)
Set the panel that will be used at the bottom of the popup. |
|
void |
setMonthView(JXMonthView monthView)
Set the component to use the specified JXMonthView. |
|
void |
setTimeZone(TimeZone tz)
Sets the time zone with the given time zone value. |
|
void |
setUI(DatePickerUI ui)
Sets the L&F object that renders this component. |
|
protected void |
updateTimeZone(TimeZone oldValue,
TimeZone newValue)
Callback from monthView timezone changes. |
|
void |
updateUI()
Resets the UI property with the value from the current look and feel. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
---|
public static final String uiClassID
public static final String EDITOR
public static final String MONTH_VIEW
public static final String LINK_PANEL
public static final String COMMIT_KEY
public static final String CANCEL_KEY
public static final String HOME_NAVIGATE_KEY
public static final String HOME_COMMIT_KEY
protected boolean lightWeightPopupEnabled
Constructor Detail |
---|
public JXDatePicker()
DatePickerFormatter
.
The date picker is configured with the default time zone and locale
setTimeZone(java.util.TimeZone)
,
getTimeZone()
public JXDatePicker(Date selected)
DatePickerFormatter
.
The date picker is configured with the default time zone and locale
selected
- the initially selected datesetTimeZone(java.util.TimeZone)
,
getTimeZone()
public JXDatePicker(Locale locale)
DatePickerFormatter
.
The date picker is configured with the default time zone and specified
locale
locale
- initial LocalesetTimeZone(java.util.TimeZone)
,
getTimeZone()
public JXDatePicker(Date selection, Locale locale)
DatePickerFormatter
.
The date picker is configured with the default time zone and specified locale
selection
- initially selected Datelocale
- initial LocalesetTimeZone(java.util.TimeZone)
,
getTimeZone()
Method Detail |
---|
public void setDate(Date date)
Does nothing if the ui vetos the new date - as might happen if the code tries to set a date which is unselectable in the monthView's context. The actual value of the new Date is controlled by the JXMonthView's DateSelectionModel. The default implementation normalizes the date to the start of the day in the model's calendar's coordinates, that is all time fields are zeroed. To keep the time fields, configure the monthView with a SingleDaySelectionModel.
At all "stable" (= not editing in date input field nor in the monthView) times the date is the same in the JXMonthView, this JXDatePicker and the editor. If a new Date is set, this invariant is enforced by the DatePickerUI.
This is a bound property.
date
- the new date to set.getDate()
,
DateSelectionModel
,
SingleDaySelectionModel
public Date getDate()
protected void updateTimeZone(TimeZone oldValue, TimeZone newValue)
NOTE: as timeZone is a bound property of this class we need to guarantee the propertyChangeNotification. As this class doesn't own this property it must listen to the owner (monthView) and re-fire the change.
oldValue
- the old timezone.newValue
- the new timezone.public DatePickerUI getUI()
public void setUI(DatePickerUI ui)
ui
- UI to use for this JXDatePicker
public void updateUI()
updateUI
in class JComponent
UIManager.getUI(javax.swing.JComponent)
public String getUIClassID()
javax.swing.JComponent
UIDefaults
key used to
look up the name of the swing.plaf.ComponentUI
class that defines the look and feel
for this component. Most applications will never need to
call this method. Subclasses of JComponent
that support
pluggable look and feel should override this method to
return a UIDefaults
key that maps to the
ComponentUI
subclass that defines their look and feel.
getUIClassID
in class JComponent
UIDefaults
key for a
ComponentUI
subclassUIDefaults.getUI(javax.swing.JComponent)
public void setFormats(String... formats)
java.text.SimpleDateFormat
class. Note: The given formats are internally synched to the picker's current TimeZone.
formats
- zero or more not null string formats to use. Note that a
null array is allowed and resets the formatter to use the
localized default formats.
NullPointerException
- any array element is null.SimpleDateFormat
public void setFormats(DateFormat... formats)
Note: The given formats are internally synched to the picker's current TimeZone.
formats
- zero or more not null formats to use. Note that a
null array is allowed and resets the formatter to use the
localized default formats.
NullPointerException
- any of its elements is null.public DateFormat[] getFormats()
JXDatePickerFormatter.
javax.swing.JFormattedTextField.AbstractFormatter
and javax.swing.text.DefaultFormatter
do not have
support for accessing the formats used.
- Returns:
- array of formats guaranteed to be not null, but might be empty.
public JXMonthView getMonthView()
JXMonthView
used in the popup to
select dates from.
public void setMonthView(JXMonthView monthView)
monthView
- month view comopnent.
NullPointerException
- if view component is nullsetTimeZone(java.util.TimeZone)
,
getTimeZone()
public TimeZone getTimeZone()
TimeZone
used by the JXMonthView
.public void setTimeZone(TimeZone tz)
PENDING JW: currently this property is the only property of the monthView which is exposed in this api. Not sure why it is here at all. It's asymetric (to the other properties) and as such should be either removed or the others which might be relevant to a datePicker exposed as well (probably hiding the monthView itself as an implementation detail of the ui delegate).
tz
- The TimeZone
.public Date getLinkDay()
PENDING JW: the property should be named linkDate - but that's held by the deprecated long returning method. Maybe revisit if we actually remove the other.
public void setLinkDay(Date linkDay, String linkFormatString)
linkDay
- the Date to set on the LinkPanellinkFormatString
- String used to format the linkMessageFormat
public void setLinkDay(Date linkDay)
linkDay
- the date used in the TodayPanelprotected void setLinkFormat(MessageFormat _linkFormat)
_linkFormat
- the _linkFormat to setprotected MessageFormat getLinkFormat()
public JPanel getLinkPanel()
public void setLinkPanel(JPanel linkPanel)
linkPanel
- The new panel to install in the popuppublic JFormattedTextField getEditor()
Clients should NOT use this method. It is provided to temporarily support the PLAF code.
public void setEditor(JFormattedTextField editor)
The default is created and set by the UI delegate.
Clients should NOT use this method. It is provided to temporarily support the PLAF code.
editor
- the formatted input.
NullPointerException
- if editor is null.getEditor()
public void setComponentOrientation(ComponentOrientation orientation)
java.awt.Component
LayoutManager
and Component
subclasses will use this property to
determine how to lay out and draw components.
At construction time, a component's orientation is set to
ComponentOrientation.UNKNOWN
,
indicating that it has not been specified
explicitly. The UNKNOWN orientation behaves the same as
ComponentOrientation.LEFT_TO_RIGHT
.
To set the orientation of a single component, use this method.
To set the orientation of an entire component
hierarchy, use
applyComponentOrientation
.
setComponentOrientation
in class Component
ComponentOrientation
public boolean isEditValid()
public void commitEdit() throws ParseException
ParseException
- Throws parse exception if the date
can not be parsed.public void cancelEdit()
public void setEditable(boolean value)
value
- isEditable()
public boolean isEditable()
true
if the picker is editable; false
otherwisepublic Font getFont()
getFont
in interface MenuContainer
getFont
in class Component
Component.setFont(java.awt.Font)
public void setFont(Font font)
setFont
in class JComponent
font
- the desired Font
for this componentComponent.getFont()
public void setLightWeightPopupEnabled(boolean aFlag)
lightWeightPopupEnabled
property, which
provides a hint as to whether or not a lightweight
Component
should be used to contain the
JXDatePicker
, versus a heavyweight
Component
such as a Panel
or a Window
. The decision of lightweight
versus heavyweight is ultimately up to the
JXDatePicker
. Lightweight windows are more
efficient than heavyweight windows, but lightweight
and heavyweight components do not mix well in a GUI.
If your application mixes lightweight and heavyweight
components, you should disable lightweight popups.
The default value for the lightWeightPopupEnabled
property is true
, unless otherwise specified
by the look and feel. Some look and feels always use
heavyweight popups, no matter what the value of this property.
See the article Mixing Heavy and Light Components
on
The Swing Connection
This method fires a property changed event.
aFlag
- if true
, lightweight popups are desiredfalse
to require heavyweight popups.public boolean isLightWeightPopupEnabled()
lightWeightPopupEnabled
property.
lightWeightPopupEnabled
propertysetLightWeightPopupEnabled(boolean)
public int getBaseline(int width, int height)
width
- Width of the component to determine baseline for.height
- Height of the component to determine baseline for.
public void addActionListener(ActionListener l)
l
- The ActionListener that is to be notifiedpublic void removeActionListener(ActionListener l)
l
- The action listener to remove.public <T extends EventListener> T[] getListeners(Class<T> listenerType)
javax.swing.JComponent
FooListener
s
upon this JComponent
.
FooListener
s are registered using the
addFooListener
method.
You can specify the listenerType
argument
with a class literal,
such as
FooListener.class
.
For example, you can query a
JComponent
c
for its mouse listeners with the following code:
MouseListener[] mls = (MouseListener[])(c.getListeners(MouseListener.class));If no such listeners exist, this method returns an empty array.
getListeners
in class JComponent
listenerType
- the type of listeners requested; this parameter
should specify an interface that descends from
java.util.EventListener
FooListener
s on this component,
or an empty array if no such
listeners have been addedJComponent.getVetoableChangeListeners()
,
JComponent.getAncestorListeners()
protected void fireActionPerformed(String actionCommand)
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |