## mars.venus
Class RepeatButton

    java.lang.Object
      java.awt.Component
          java.awt.Container
              javax.swing.JComponent
                  javax.swing.AbstractButton
                      javax.swing.JButton
                          mars.venus.RepeatButton

All Implemented Interfaces:
  ActionListener, MouseListener, ImageObserver, ItemSelectable, MenuContainer, Serializable, EventListener, Accessible, SwingConstants

    public class RepeatButton

extends JButton
implements ActionListener, MouseListener

`RepeatButton` is a `JButton` which contains a timer for firing events while the button is held down. There is a default initial delay of 300ms before the first event is fired and a 60ms delay between subsequent events. When the user holds the button down and moves the mouse out from over the button, the timer stops, but if the user moves the mouse back over the button without having released the mouse button, the timer starts up again at the same delay rate. If the enabled state is changed while the timer is active, it will be stopped. NOTE: The normal button behavior is that the action event is fired after the button is released. It may be important to konw then that this is still the case. So in effect, listeners will get 1 more event then what the internal timer fires. It's not a "bug", per se, just something to be aware of. There seems to be no way to suppress the final event from firing anyway, except to process all ActionListeners internally. But realistically, it probably doesn't matter.

See Also:
  Serialized Form

Nested Class Summary

Nested classes/interfaces inherited from class javax.swing.JButton
`JButton.AccessibleJButton`

Nested classes/interfaces inherited from class javax.swing.AbstractButton
`AbstractButton.AccessibleAbstractButton, AbstractButton.ButtonChangeListener`

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.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy`

Field Summary

Fields inherited from class javax.swing.AbstractButton

`actionListener, BORDER_PAINTED_CHANGED_PROPERTY, changeEvent, changeListener, CONTENT_AREA_FILLED_CHANGED_PROPERTY, DISABLED_ICON_CHANGED_PROPERTY, DISABLED_SELECTED_ICON_CHANGED_PROPERTY, FOCUS_PAINTED_CHANGED_PROPERTY, HORIZONTAL_ALIGNMENT_CHANGED_PROPERTY, HORIZONTAL_TEXT_POSITION_CHANGED_PROPERTY, ICON_CHANGED_PROPERTY, itemListener, MARGIN_CHANGED_PROPERTY, MNEMONIC_CHANGED_PROPERTY, model, MODEL_CHANGED_PROPERTY, PRESSED_ICON_CHANGED_PROPERTY, ROLLOVER_ENABLED_CHANGED_PROPERTY, ROLLOVER_ICON_CHANGED_PROPERTY, ROLLOVER_SELECTED_ICON_CHANGED_PROPERTY, SELECTED_ICON_CHANGED_PROPERTY, TEXT_CHANGED_PROPERTY, VERTICAL_ALIGNMENT_CHANGED_PROPERTY, VERTICAL_TEXT_POSITION_CHANGED_PROPERTY`

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 javax.swing.SwingConstants
`BOTTOM, CENTER, EAST, HORIZONTAL, LEADING, LEFT, NEXT, NORTH, NORTH_EAST, NORTH_WEST, PREVIOUS, RIGHT, SOUTH, SOUTH_EAST, SOUTH_WEST, TOP, TRAILING, VERTICAL, WEST`

Fields inherited from interface java.awt.image.ImageObserver
`ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH`

Constructor Summary
`RepeatButton()` Creates a button with no set text or icon.
`RepeatButton(Action a)` Creates a button where properties are taken from the Action supplied.
`RepeatButton(Icon icon)` Creates a button with an icon.
`RepeatButton(String text)` Creates a button with text.
`RepeatButton(String text, Icon icon)` Creates a button with initial text and an icon.

Method Summary
`void` `actionPerformed(ActionEvent ae)` Handle action events.
`int` `getDelay()` Gets the delay for the timer of this button.
`int` `getInitialDelay()` Gets the initial delay for the timer of this button.
`boolean` `isRepeatEnabled()` Checks if the button should fire events when held.
`static void` `main(String[] args)` Main method, for testing.
`void` `mouseClicked(MouseEvent me)` Handle mouse clicked events.
`void` `mouseEntered(MouseEvent me)` Handle mouse entered events.
`void` `mouseExited(MouseEvent me)` Handle mouse exited events.
`void` `mousePressed(MouseEvent me)` Handle mouse pressed events.
`void` `mouseReleased(MouseEvent me)` Handle mouse released events.
`void` `setDelay(int d)` Set the delay for the timer of this button.
`void` `setEnabled(boolean en)` Sets the enabled state of this button.
`void` `setInitialDelay(int d)` Sets the initial delay for the timer of this button.
`void` `setRepeatEnabled(boolean en)` Sets if the button should fire events when held.

Methods inherited from class javax.swing.JButton
`getAccessibleContext, getUIClassID, isDefaultButton, isDefaultCapable, paramString, removeNotify, setDefaultCapable, updateUI`

Methods inherited from class javax.swing.AbstractButton

`actionPropertyChanged, addActionListener, addChangeListener, addImpl, addItemListener, checkHorizontalKey, checkVerticalKey, configurePropertiesFromAction, createActionListener, createActionPropertyChangeListener, createChangeListener, createItemListener, doClick, doClick, fireActionPerformed, fireItemStateChanged, fireStateChanged, getAction, getActionCommand, getActionListeners, getChangeListeners, getDisabledIcon, getDisabledSelectedIcon, getDisplayedMnemonicIndex, getHideActionText, getHorizontalAlignment, getHorizontalTextPosition, getIcon, getIconTextGap, getItemListeners, getLabel, getMargin, getMnemonic, getModel, getMultiClickThreshhold, getPressedIcon, getRolloverIcon, getRolloverSelectedIcon, getSelectedIcon, getSelectedObjects, getText, getUI, getVerticalAlignment, getVerticalTextPosition, imageUpdate, init, isBorderPainted, isContentAreaFilled, isFocusPainted, isRolloverEnabled, isSelected, paintBorder, removeActionListener, removeChangeListener, removeItemListener, setAction, setActionCommand, setBorderPainted, setContentAreaFilled, setDisabledIcon, setDisabledSelectedIcon, setDisplayedMnemonicIndex, setFocusPainted, setHideActionText, setHorizontalAlignment, setHorizontalTextPosition, setIcon, setIconTextGap, setLabel, setLayout, setMargin, setMnemonic, setMnemonic, setModel, setMultiClickThreshhold, setPressedIcon, setRolloverEnabled, setRolloverIcon, setRolloverSelectedIcon, setSelected, setSelectedIcon, setText, setUI, setVerticalAlignment, setVerticalTextPosition`

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, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, 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, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setFocusTraversalKeys, setFont, 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, 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, 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, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, hide, 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, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, 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`

Constructor Detail

### RepeatButton

    public RepeatButton()

  Creates a button with no set text or icon.

### RepeatButton

    public RepeatButton(Action a)

  Creates a button where properties are taken from the Action supplied.

  Parameters:
    `a` - the button action

### RepeatButton

    public RepeatButton(Icon icon)

  Creates a button with an icon.

  Parameters:
    `icon` - the button icon

### RepeatButton

    public RepeatButton(String text)

  Creates a button with text.

  Parameters:
    `text` - the button text

### RepeatButton

    public RepeatButton(String text,
                        Icon icon)

  Creates a button with initial text and an icon.

  Parameters:
    `text` - the button text
    `icon` - the button icon

Method Detail

### getDelay

    public int getDelay()

  Gets the delay for the timer of this button.

  Returns:
    the delay

### setDelay

    public void setDelay(int d)

  Set the delay for the timer of this button.

  Parameters:
    `d` - the delay

### getInitialDelay

    public int getInitialDelay()

  Gets the initial delay for the timer of this button.

  Returns:
    the initial delay

### setInitialDelay

    public void setInitialDelay(int d)

  Sets the initial delay for the timer of this button.

  Parameters:
    `d` - the initial delay

### isRepeatEnabled

    public boolean isRepeatEnabled()

  Checks if the button should fire events when held. If false, the button is effectively a plain old JButton, but there may be times when this feature might wish to be disabled.

  Returns:
    if true, the button should fire events when held

### setRepeatEnabled

    public void setRepeatEnabled(boolean en)

  Sets if the button should fire events when held. If false, the button is effectively a plain old JButton, but there may be times when this feature might wish to be disabled. If false, it will also stop the timer if it's running.

  Parameters:
    `en` - if true, the button should fire events when held

### setEnabled

    public void setEnabled(boolean en)

  Sets the enabled state of this button. Overridden to stop the timer if it's running.

  Overrides:
    `setEnabled` in class `AbstractButton`
  Parameters:
    `en` - if true, enables the button

### actionPerformed

    public void actionPerformed(ActionEvent ae)

  Handle action events. OVERRIDE THIS IN SUBCLASS!

  Specified by:
    `actionPerformed` in interface `ActionListener`
  Parameters:
    `ae` - the action event

### mouseClicked

    public void mouseClicked(MouseEvent me)

  Handle mouse clicked events.

  Specified by:
    `mouseClicked` in interface `MouseListener`
  Parameters:
    `me` - the mouse event

### mousePressed

    public void mousePressed(MouseEvent me)

  Handle mouse pressed events.

  Specified by:
    `mousePressed` in interface `MouseListener`
  Parameters:
    `me` - the mouse event

### mouseReleased

    public void mouseReleased(MouseEvent me)

  Handle mouse released events.

  Specified by:
    `mouseReleased` in interface `MouseListener`
  Parameters:
    `me` - the mouse event

### mouseEntered

    public void mouseEntered(MouseEvent me)

  Handle mouse entered events.

  Specified by:
    `mouseEntered` in interface `MouseListener`
  Parameters:
    `me` - the mouse event

### mouseExited

    public void mouseExited(MouseEvent me)

  Handle mouse exited events.

  Specified by:
    `mouseExited` in interface `MouseListener`
  Parameters:
    `me` - the mouse event

### main

    public static void main(String[] args)

  Main method, for testing. Creates a frame with both styles of menu.

  Parameters:
    `args` - the command-line arguments