Package mars.venus

Class 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 know 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:
  • Constructor Details

    • RepeatButton

      public RepeatButton()
      Creates a button with no set text or icon.
    • RepeatButton

      public RepeatButton(Action action)
      Creates a button where properties are taken from the Action supplied.
      Parameters:
      action - 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 Details

    • getInterval

      public int getInterval()
      Gets the interval time between repetitions after the initial delay.
      Returns:
      the interval time in milliseconds
    • setInterval

      public void setInterval(int interval)
      Set the interval time between repetitions after the initial delay.
      Parameters:
      interval - the interval time in milliseconds
    • getInitialDelay

      public int getInitialDelay()
      Gets the initial delay time before repetitions begin.
      Returns:
      the initial delay time in milliseconds
    • setInitialDelay

      public void setInitialDelay(int delay)
      Sets the initial delay time before repetitions begin.
      Parameters:
      delay - the initial delay time in milliseconds
    • 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 enable)
      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:
      enable - if true, the button should fire events when held
    • setEnabled

      public void setEnabled(boolean enable)
      Sets the enabled state of this button. Overridden to stop the timer if it's running.
      Overrides:
      setEnabled in class AbstractButton
      Parameters:
      enable - if true, enables the button
    • actionPerformed

      public void actionPerformed(ActionEvent event)
      Handle action events. OVERRIDE THIS IN SUBCLASS!
      Specified by:
      actionPerformed in interface ActionListener
      Parameters:
      event - the action event
    • mouseClicked

      public void mouseClicked(MouseEvent event)
      Handle mouse clicked events.
      Specified by:
      mouseClicked in interface MouseListener
      Parameters:
      event - the mouse event
    • mousePressed

      public void mousePressed(MouseEvent event)
      Handle mouse pressed events.
      Specified by:
      mousePressed in interface MouseListener
      Parameters:
      event - the mouse event
    • mouseReleased

      public void mouseReleased(MouseEvent event)
      Handle mouse released events.
      Specified by:
      mouseReleased in interface MouseListener
      Parameters:
      event - the mouse event
    • mouseEntered

      public void mouseEntered(MouseEvent event)
      Handle mouse entered events.
      Specified by:
      mouseEntered in interface MouseListener
      Parameters:
      event - the mouse event
    • mouseExited

      public void mouseExited(MouseEvent event)
      Handle mouse exited events.
      Specified by:
      mouseExited in interface MouseListener
      Parameters:
      event - the mouse event