com.softtech.swingcalendar
Class SwingCalendarPanel

java.lang.Object
  extended byjava.awt.Component
      extended byjava.awt.Container
          extended byjavax.swing.JComponent
              extended byjavax.swing.JPanel
                  extended bycom.softtech.swingcalendar.SwingCalendarPanel
All Implemented Interfaces:
javax.accessibility.Accessible, javax.swing.event.ChangeListener, java.util.EventListener, java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable

public class SwingCalendarPanel
extends javax.swing.JPanel
implements javax.swing.event.ChangeListener

This JPanel subclass allows user to select a month, year, and date.

This panel can be added to any JFrame, JInternalFrame, or JDialog.

Version:
1.0
Author:
Jeff Smith, jeff@SoftTechDesign.com
See Also:
Serialized Form

Nested Class Summary
(package private)  class SwingCalendarPanel.CalendarSelectionListener
          CalendarSelectionListener listens for changes to the current row and column of the JTable.
 
Nested classes inherited from class javax.swing.JPanel
javax.swing.JPanel.AccessibleJPanel
 
Nested classes inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
 
Nested classes inherited from class java.awt.Container
java.awt.Container.AccessibleAWTContainer
 
Nested classes inherited from class java.awt.Component
java.awt.Component.AccessibleAWTComponent, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
 
Field Summary
private  java.util.Vector colNames
          column names (days of week)
private  int lastValidCol
          last valid col selected (reverts to this row if user clicks on a cell without a date in it)
private  int lastValidRow
          last valid row selected (reverts to this row if user clicks on a cell without a date in it)
private static java.lang.String[] MONTHS
          months of the year (extracted from DateFormatSymbols class)
(package private)  javax.swing.ScrollPaneLayout scrollPaneLayout
          layout manager for the scroll pane
(package private)  javax.swing.JScrollPane spaneCalendar
          calendar panel scroll pane
(package private)  javax.swing.JSpinner spinMonth
          spinner control for the month
(package private)  javax.swing.JSpinner spinYear
          spinner control for the year
(package private)  javax.swing.JTable tblCalendar
          table that displays the days of the month
private static java.lang.String[] WEEKDAYS
          days of the week (extracted from DateFormatSymbols class)
 
Fields inherited from class javax.swing.JPanel
 
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.Container
 
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
private SwingCalendarPanel()
          SwingCalendarPanel (private) constructor
  SwingCalendarPanel(int initMonth, int initDate, int initYear)
          SwingCalendarPanel constructor
 
Method Summary
 int getDate()
          getDate returns the date (day of month) selected by the user
 int getMonth()
          getMonth returns the month selected by the user
 int getYear()
          getYear returns the year selected by the user
private  void initControls(int initMonth, int initDate, int initYear)
          initControls - initializes the month and year JSpinner controls as well as the JTable (stores calendar dates in cells).
private  void jbInit()
          jbInit - component initialization
 void stateChanged(javax.swing.event.ChangeEvent e)
          stateChanged - called when the month or year JSpinner value changes.
private  void updateDaysInTable(int initDate)
          updateDaysInTable redraws the days of the month in the JTable based on the month and year in the JSpinner controls.
 
Methods inherited from class javax.swing.JPanel
getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUI
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addPropertyChangeListener, addPropertyChangeListener, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBorder, getBounds, getClientProperty, getComponentGraphics, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getGraphics, getHeight, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPreferredSize, getPropertyChangeListeners, getPropertyChangeListeners, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isMaximumSizeSet, isMinimumSizeSet, isOpaque, isOptimizedDrawingEnabled, isPaintingTile, isPreferredSizeSet, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removePropertyChangeListener, removePropertyChangeListener, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFont, setForeground, 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, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setFocusCycleRoot, setFocusTraversalKeys, setFocusTraversalPolicy, setLayout, transferFocusBackward, transferFocusDownCycle, validate, validateTree
 
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMouseWheelListeners, getName, getParent, getPeer, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

WEEKDAYS

private static java.lang.String[] WEEKDAYS
days of the week (extracted from DateFormatSymbols class)


MONTHS

private static java.lang.String[] MONTHS
months of the year (extracted from DateFormatSymbols class)


colNames

private java.util.Vector colNames
column names (days of week)


lastValidRow

private int lastValidRow
last valid row selected (reverts to this row if user clicks on a cell without a date in it)


lastValidCol

private int lastValidCol
last valid col selected (reverts to this row if user clicks on a cell without a date in it)


spaneCalendar

javax.swing.JScrollPane spaneCalendar
calendar panel scroll pane


tblCalendar

javax.swing.JTable tblCalendar
table that displays the days of the month


spinMonth

javax.swing.JSpinner spinMonth
spinner control for the month


spinYear

javax.swing.JSpinner spinYear
spinner control for the year


scrollPaneLayout

javax.swing.ScrollPaneLayout scrollPaneLayout
layout manager for the scroll pane

Constructor Detail

SwingCalendarPanel

private SwingCalendarPanel()
SwingCalendarPanel (private) constructor


SwingCalendarPanel

public SwingCalendarPanel(int initMonth,
                          int initDate,
                          int initYear)
SwingCalendarPanel constructor

Parameters:
initMonth - int (initial month to display)
initDate - int (initial date to display)
initYear - int (initial year to display)
Method Detail

initControls

private void initControls(int initMonth,
                          int initDate,
                          int initYear)
initControls - initializes the month and year JSpinner controls as well as the JTable (stores calendar dates in cells).

Parameters:
initMonth - int (initial month to display)
initDate - int (initial date to display)
initYear - int (initial year to display)

jbInit

private void jbInit()
             throws java.lang.Exception
jbInit - component initialization

Throws:
java.lang.Exception

getMonth

public int getMonth()
getMonth returns the month selected by the user

Returns:
int (the month selected by the user)

getYear

public int getYear()
getYear returns the year selected by the user

Returns:
int (the year selected by the user)

getDate

public int getDate()
getDate returns the date (day of month) selected by the user

Returns:
int (the date or dayOfMonth selected by the user)

updateDaysInTable

private void updateDaysInTable(int initDate)
updateDaysInTable redraws the days of the month in the JTable based on the month and year in the JSpinner controls. It initially selects (highlights) the given initDate

Parameters:
initDate - int (initial date selected)

stateChanged

public void stateChanged(javax.swing.event.ChangeEvent e)
stateChanged - called when the month or year JSpinner value changes. Updates the calendar (JTable).

Specified by:
stateChanged in interface javax.swing.event.ChangeListener
Parameters:
e - ChangeEvent