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 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
  • Constructor Details

    • 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 Details

    • 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