Class JTimeChooser

java.lang.Object
java.awt.Component
java.awt.Container
java.awt.Window
java.awt.Dialog
javax.swing.JDialog
org.sm.smtools.swing.dialogs.JDefaultDialog
org.sm.smtools.swing.dialogs.JTimeChooser
All Implemented Interfaces:
java.awt.event.ActionListener, java.awt.event.WindowListener, java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, java.util.EventListener, javax.accessibility.Accessible, javax.swing.event.ChangeListener, javax.swing.RootPaneContainer, javax.swing.WindowConstants

public final class JTimeChooser
extends JDefaultDialog
implements javax.swing.event.ChangeListener
The JTimeChooser class provides a dialog box for choosing a time.

Note that a valid I18NL10N database must be available!

The dialog box is modal, non-resizable and contains "Ok" and "Cancel" buttons to close it. Here's an example of a time chooser (Microsoft Windows L&F):

As can be seen, the time chooser's GUI consists of two main areas:

  • An analogue clock showing the currently selected hour, minute and second. An optional digital clock can also be shown in the clock's panel. Both clocks are updated in real-time.
  • Four JSpinners for selecting the hour, minute, second and millisecond.

There's also the exclamation checkbox that allows tracking (and selecting) the current time.

Depending on the desired functionality, the time chooser can be allowed to select only:

  • the hour and minute,
  • the hour, minute and second,
  • or the hour, minute, second and millisecond.

When the clock is showing HMS or HMS.ms, the user can also select the seconds by clicking on the clock's face.

When the user closes the time chooser's dialog box, its state should be queried as follows:

if (!myTimeChooser.isCancelled()) {
TimeStamp timeStamp = myTimeChooser.getSelectedTime();
// rest of code
}

Note that the system resources must be initialised (see JARResources.fSystemResources).

Note that this class cannot be subclassed!

Version:
06/08/2019
Author:
Sven Maerivoet
See Also:
TimeStamp, Serialized Form
  • Nested Class Summary

    Nested Classes
    Modifier and Type Class Description
    static class  JTimeChooser.EDigitalClock
    Useful constants to specify whether or not a digital indication of the current time should be shown.
    static class  JTimeChooser.EType
    Useful constants to specify a time chooser for selecting only the hour and minute, and/or second and/or millisecond.
    static class  JTimeChooser.EUpdatingMethod
    Useful constants to specify a time chooser that shows a clock which is updated continuously or in second time steps.

    Nested classes/interfaces inherited from class org.sm.smtools.swing.dialogs.JDefaultDialog

    JDefaultDialog.EModality, JDefaultDialog.ESize

    Nested classes/interfaces inherited from class javax.swing.JDialog

    javax.swing.JDialog.AccessibleJDialog

    Nested classes/interfaces inherited from class java.awt.Dialog

    java.awt.Dialog.AccessibleAWTDialog, java.awt.Dialog.ModalExclusionType, java.awt.Dialog.ModalityType

    Nested classes/interfaces inherited from class java.awt.Window

    java.awt.Window.AccessibleAWTWindow, java.awt.Window.Type

    Nested classes/interfaces inherited from class java.awt.Container

    java.awt.Container.AccessibleAWTContainer

    Nested classes/interfaces inherited from class java.awt.Component

    java.awt.Component.AccessibleAWTComponent, java.awt.Component.BaselineResizeBehavior, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
  • Field Summary

    Fields inherited from class javax.swing.JDialog

    accessibleContext, rootPane, rootPaneCheckingEnabled

    Fields inherited from class java.awt.Dialog

    DEFAULT_MODALITY_TYPE

    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

    Fields inherited from interface javax.swing.WindowConstants

    DISPOSE_ON_CLOSE, DO_NOTHING_ON_CLOSE, EXIT_ON_CLOSE, HIDE_ON_CLOSE
  • Constructor Summary

    Constructors
    Constructor Description
    JTimeChooser​(javax.swing.JFrame owner, java.lang.String title, JDefaultDialog.EType dialogType, JTimeChooser.EType type, JTimeChooser.EUpdatingMethod updatingMethod, JTimeChooser.EDigitalClock digitalClock)
    Constructs a JTimeChooser object.
  • Method Summary

    Modifier and Type Method Description
    void actionPerformed​(java.awt.event.ActionEvent e)
    The dialog box's action listener.
    TimeStamp getSelectedTime()
    Returns the currently selected time.
    protected void initialiseClass​(java.lang.Object[] parameters)
    Allows custom initialisation of a subclass's member fields.
    protected void setupMainPanel​(javax.swing.JPanel mainPanel)
    Sets up the custom content in the dialog box.
    protected java.lang.String setupWindowTitle()
    Sets up the window title of the dialog box.
    void stateChanged​(javax.swing.event.ChangeEvent e)  

    Methods inherited from class javax.swing.JDialog

    addImpl, createRootPane, dialogInit, getAccessibleContext, getContentPane, getDefaultCloseOperation, getGlassPane, getGraphics, getJMenuBar, getLayeredPane, getRootPane, getTransferHandler, isDefaultLookAndFeelDecorated, isRootPaneCheckingEnabled, paramString, processWindowEvent, remove, repaint, setContentPane, setDefaultCloseOperation, setDefaultLookAndFeelDecorated, setGlassPane, setJMenuBar, setLayeredPane, setLayout, setRootPane, setRootPaneCheckingEnabled, setTransferHandler, update

    Methods inherited from class java.awt.Dialog

    addNotify, getModalityType, getTitle, isModal, isResizable, isUndecorated, setBackground, setModal, setModalityType, setOpacity, setResizable, setShape, setTitle, setUndecorated, setVisible, toBack

    Methods inherited from class java.awt.Window

    addPropertyChangeListener, addPropertyChangeListener, addWindowFocusListener, addWindowListener, addWindowStateListener, createBufferStrategy, createBufferStrategy, dispose, getBackground, getBufferStrategy, getFocusableWindowState, getFocusCycleRootAncestor, getFocusOwner, getFocusTraversalKeys, getIconImages, getInputContext, getListeners, getLocale, getModalExclusionType, getMostRecentFocusOwner, getOpacity, getOwnedWindows, getOwner, getOwnerlessWindows, getShape, getToolkit, getType, getWarningString, getWindowFocusListeners, getWindowListeners, getWindows, getWindowStateListeners, isActive, isAlwaysOnTop, isAlwaysOnTopSupported, isAutoRequestFocus, isFocusableWindow, isFocusCycleRoot, isFocused, isLocationByPlatform, isOpaque, isShowing, isValidateRoot, pack, paint, processEvent, processWindowFocusEvent, processWindowStateEvent, removeNotify, removeWindowFocusListener, removeWindowListener, removeWindowStateListener, setAlwaysOnTop, setAutoRequestFocus, setBounds, setBounds, setCursor, setFocusableWindowState, setFocusCycleRoot, setIconImage, setIconImages, setLocation, setLocation, setLocationByPlatform, setLocationRelativeTo, setMinimumSize, setModalExclusionType, setSize, setSize, setType, toFront

    Methods inherited from class java.awt.Container

    add, add, add, add, add, addContainerListener, applyComponentOrientation, areFocusTraversalKeysSet, doLayout, findComponentAt, findComponentAt, getAlignmentX, getAlignmentY, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalPolicy, getInsets, getLayout, getMaximumSize, getMinimumSize, getMousePosition, getPreferredSize, invalidate, isAncestorOf, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, list, list, paintComponents, print, printComponents, processContainerEvent, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusTraversalKeys, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setFont, transferFocusDownCycle, validate, validateTree

    Methods inherited from class java.awt.Component

    add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, checkImage, checkImage, coalesceEvents, contains, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBaseline, getBaselineResizeBehavior, getBounds, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphicsConfiguration, getHeight, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocation, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getSize, getTreeLock, getWidth, getX, getY, hasFocus, imageUpdate, isBackgroundSet, isCursorSet, isDisplayable, isDoubleBuffered, isEnabled, isFocusable, isFocusOwner, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isValid, isVisible, list, list, list, paintAll, prepareImage, prepareImage, printAll, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processKeyEvent, processMouseEvent, processMouseMotionEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, requestFocus, requestFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, requestFocusInWindow, revalidate, setComponentOrientation, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeysEnabled, setForeground, setIgnoreRepaint, setLocale, setMaximumSize, setMixingCutoutShape, setName, setPreferredSize, toString, transferFocus, transferFocusBackward, transferFocusUpCycle

    Methods inherited from class java.lang.Object

    clone, equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • Constructor Details

    • JTimeChooser

      public JTimeChooser​(javax.swing.JFrame owner, java.lang.String title, JDefaultDialog.EType dialogType, JTimeChooser.EType type, JTimeChooser.EUpdatingMethod updatingMethod, JTimeChooser.EDigitalClock digitalClock)
      Constructs a JTimeChooser object.

      Depending on the desired functionality, the time chooser can be allowed to select only:

      • the hour and minute,
      • the hour, minute and second,
      • or the hour, minute, second and millisecond.
      Parameters:
      owner - the frame in which this dialog is to be displayed
      title - the dialog's window title
      dialogType - the type of dialog
      type - the EType type of time chooser
      updatingMethod - an EUpdatingMethod flag indicating whether or not the clock's hands should be updated continuously or discretely
      digitalClock - an EDigitalClock flag indicating whether or not a digital indication of the current time should be shown
      See Also:
      JTimeChooser.EType, JTimeChooser.EUpdatingMethod, JTimeChooser.EDigitalClock
  • Method Details

    • stateChanged

      public void stateChanged​(javax.swing.event.ChangeEvent e)
      Specified by:
      stateChanged in interface javax.swing.event.ChangeListener
    • actionPerformed

      public void actionPerformed​(java.awt.event.ActionEvent e)
      Description copied from class: JDefaultDialog
      The dialog box's action listener.

      Note that when overriding this method in a subclass, its parent should explicitly be called in order to guarantee the correct processing of the user's input ("Ok" and "Ok/Cancel" type of dialog boxes):

      super.actionPerformed(e);
      // rest of method's code

      Specified by:
      actionPerformed in interface java.awt.event.ActionListener
      Overrides:
      actionPerformed in class JDefaultDialog
      Parameters:
      e - the ActionEvent that is received
    • getSelectedTime

      public TimeStamp getSelectedTime()
      Returns the currently selected time.
      Returns:
      the currently selected time
    • initialiseClass

      protected void initialiseClass​(java.lang.Object[] parameters)
      Description copied from class: JDefaultDialog
      Allows custom initialisation of a subclass's member fields.

      Note that the caller should specify null if no parameters are specified.

      Overrides:
      initialiseClass in class JDefaultDialog
      Parameters:
      parameters - an array of Objects
    • setupWindowTitle

      protected final java.lang.String setupWindowTitle()
      Description copied from class: JDefaultDialog
      Sets up the window title of the dialog box.

      In order to obtain a custom dialog title, the caller should override this method (it returns null in the baseclass).

      Overrides:
      setupWindowTitle in class JDefaultDialog
      Returns:
      the window title of the dialog box
    • setupMainPanel

      protected void setupMainPanel​(javax.swing.JPanel mainPanel)
      Description copied from class: JDefaultDialog
      Sets up the custom content in the dialog box.

      A subclass should typically create labels, inputfields, ... in the dialog boxes main panel, by overriding this method.

      Note that the mainPanel object is already constructed!

      Overrides:
      setupMainPanel in class JDefaultDialog
      Parameters:
      mainPanel - the area of the dialog box that is reserved for custom content