Class Button

All Implemented Interfaces:
Animation, Editable, ActionSource<ActionEvent>, StyleListener, IconHolder, ReleasableComponent, SelectableIconHolder, TextHolder
Direct Known Subclasses:
CheckBox, FloatingActionButton, LikeButton, Picker, RadioButton, ScaleImageButton, ShareButton

public class Button extends Label implements ReleasableComponent, ActionSource<ActionEvent>, SelectableIconHolder

Button is the base class for several UI widgets allowing clickability. It has 3 states: rollover, pressed and the default state. Button can also have an com.codename1.ui.events.ActionListener that react when the Button is clicked or handle actions via a com.codename1.ui.Command.

Button has the "Button" UIID by default.

Here is trivial usage of the Button API:

Form hi = new Form("Button");
Button b = new Button("My Button");
hi.add(b);
b.addActionListener((e) -> Log.p("Clicked"));

This code shows a common use case of making a button look like a hyperlink

Form hi = new Form("Button");
Button b = new Button("Link Button");
b.getAllStyles().setBorder(Border.createEmpty());
b.getAllStyles().setTextDecoration(Style.TEXT_DECORATION_UNDERLINE);
hi.add(b);
b.addActionListener((e) -> Log.p("Clicked"));
  • Field Details

    • STATE_ROLLOVER

      public static final int STATE_ROLLOVER
      Indicates the rollover state of a button which is equivalent to focused for most uses
      See Also:
    • STATE_PRESSED

      public static final int STATE_PRESSED
      Indicates the pressed state of a button
      See Also:
    • STATE_DEFAULT

      public static final int STATE_DEFAULT
      Indicates the default state of a button which is neither pressed nor focused
      See Also:
  • Constructor Details

    • Button

      public Button()
      Constructs a button with an empty string for its text.
    • Button

      public Button(String text)

      Constructs a button with the specified text.

      Parameters
      • text: label appearing on the button
    • Button

      public Button(Command cmd)

      Allows binding a command to a button for ease of use

      Parameters
      • cmd: @param cmd command whose text would be used for the button and would recive action events from the button
    • Button

      public Button(Image icon)

      Constructs a button with the specified image.

      Parameters
      • icon: appearing on the button
    • Button

      public Button(char icon)

      Constructs a button with the specified material image icon.

      Parameters
      • icon: appearing on the button
    • Button

      public Button(String text, char icon, String id)

      Constructor a button with text, material image and uiid

      Parameters
      • text: label appearing on the button

      • icon: image appearing on the button

      • id: UIID unique identifier for button

    • Button

      public Button(String text, char icon, float iconSize, String id)

      Constructor a button with text, material image and uiid

      Parameters
      • text: label appearing on the button

      • icon: image appearing on the button

      • iconSize: image size in millimeters

      • id: UIID unique identifier for button

    • Button

      public Button(String text, Image icon, String id)

      Constructor a button with text, image and uiid

      Parameters
      • text: label appearing on the button

      • icon: image appearing on the button

      • id: UIID unique identifier for button

    • Button

      public Button(String text, Image icon)

      Constructor a button with text and image

      Parameters
      • text: label appearing on the button

      • icon: image appearing on the button

    • Button

      public Button(Image icon, String id)

      Constructor a button with image and UIID

      Parameters
      • icon: image appearing on the button

      • id: UIID unique identifier for button

    • Button

      public Button(char icon, String id)

      Constructor a button with material image icon and UIID

      Parameters
      • icon: image appearing on the button

      • id: UIID unique identifier for button

    • Button

      public Button(char icon, float iconSize, String id)

      Constructor a button with material image icon and UIID

      Parameters
      • icon: image appearing on the button

      • iconSize: the size of the icon in millimeters

      • id: UIID unique identifier for button

    • Button

      public Button(String text, String id)

      Constructor a button with text and UIID

      Parameters
      • text: label appearing on the button

      • id: UIID unique identifier for button

  • Method Details

    • isCapsTextDefault

      public static boolean isCapsTextDefault()

      Indicates whether text on the button should be drawn capitalized by default to match the Android design. This value can be set by the capsButtonTextBool theme constant

      Returns

      the capsTextDefault

    • setCapsTextDefault

      public static void setCapsTextDefault(boolean aCapsTextDefault)

      Indicates whether text on the button should be drawn capitalized by default to match the Android design This value can be set by the capsButtonTextBool theme constant

      Parameters
      • aCapsTextDefault: the capsTextDefault to set
    • isButtonRippleEffectDefault

      public static boolean isButtonRippleEffectDefault()

      Default value for the button ripple effect, this can be set with the theme constant buttonRippleBool

      Returns

      the buttonRippleEffectDefault

    • setButtonRippleEffectDefault

      public static void setButtonRippleEffectDefault(boolean aButtonRippleEffectDefault)

      Default value for the button ripple effect, this can be set with the theme constant buttonRippleBool

      Parameters
      • aButtonRippleEffectDefault: the buttonRippleEffectDefault to set
    • bindStateTo

      public void bindStateTo(Button button)

      Bind the state of this button to another button's state. Once bound, when the other button's state changes, this button will change its state to match.

      Parameters
      • button: The button whose state to bind to.
      Since

      7.0

      See also
      • #unbindStateFrom(com.codename1.ui.Button)
    • unbindStateFrom

      public void unbindStateFrom(Button button)

      Unbinds the state of this button from another button.

      Parameters
      • button: The button to unbind state from.
      Since

      7.0

      See also
      • #bindStateTo(com.codename1.ui.Button)
    • resetFocusable

      protected void resetFocusable()
      Restores the state of the focusable flag to its default state
      Overrides:
      resetFocusable in class Component
    • getState

      public int getState()

      Returns the button state

      Returns

      One of STATE_ROLLOVER, STATE_DEAFULT, STATE_PRESSED

    • setReleased

      public void setReleased()
      Set the button in released and unfocused state
      Specified by:
      setReleased in interface ReleasableComponent
    • getPressedIcon

      public Image getPressedIcon()

      Indicates the icon that is displayed on the button when the button is in pressed state

      Returns

      icon used

      See also
      • #STATE_PRESSED
      Specified by:
      getPressedIcon in interface SelectableIconHolder
    • setPressedIcon

      public void setPressedIcon(Image pressedIcon)

      Indicates the icon that is displayed on the button when the button is in pressed state

      Parameters
      • pressedIcon: icon used
      See also
      • #STATE_PRESSED
      Specified by:
      setPressedIcon in interface SelectableIconHolder
    • getRolloverPressedIcon

      public Image getRolloverPressedIcon()

      Indicates the icon that is displayed on the button when the button is in pressed state and is selected. This is ONLY applicable to toggle buttons

      Returns

      icon used

      Specified by:
      getRolloverPressedIcon in interface SelectableIconHolder
    • setRolloverPressedIcon

      public void setRolloverPressedIcon(Image rolloverPressedIcon)

      Indicates the icon that is displayed on the button when the button is in pressed state and is selected. This is ONLY applicable to toggle buttons

      Parameters
      • rolloverPressedIcon: icon used
      Specified by:
      setRolloverPressedIcon in interface SelectableIconHolder
    • getDisabledIcon

      public Image getDisabledIcon()

      Indicates the icon that is displayed on the button when the button is in the disabled state

      Returns

      icon used

      Specified by:
      getDisabledIcon in interface SelectableIconHolder
    • setDisabledIcon

      public void setDisabledIcon(Image disabledIcon)

      Indicates the icon that is displayed on the button when the button is in the disabled state

      Parameters
      • disabledIcon: icon used
      Specified by:
      setDisabledIcon in interface SelectableIconHolder
    • getRolloverIcon

      public Image getRolloverIcon()

      Indicates the icon that is displayed on the button when the button is in rolled over state

      Returns

      icon used

      See also
      • #STATE_ROLLOVER
      Specified by:
      getRolloverIcon in interface SelectableIconHolder
    • setRolloverIcon

      public void setRolloverIcon(Image rolloverIcon)

      Indicates the icon that is displayed on the button when the button is in rolled over state

      Parameters
      • rolloverIcon: icon to use
      See also
      • #STATE_ROLLOVER
      Specified by:
      setRolloverIcon in interface SelectableIconHolder
    • addStateChangeListener

      public void addStateChangeListener(ActionListener<ComponentStateChangeEvent> l)

      Adds a listener to be notified when the button state changes.

      Parameters
      • l: Listener to be notified when state changes
      Since

      7.0

      See also
      • #getState()

      • #setState(int)

      • #removeStateChangeListener(com.codename1.ui.events.ActionListener)

      Overrides:
      addStateChangeListener in class Component
    • removeStateChangeListener

      public void removeStateChangeListener(ActionListener<ComponentStateChangeEvent> l)

      Removes state change listener.

      Parameters
      • l: State change listener to remove.
      Since

      7.0

      See also
      • #addStateChangeListener(com.codename1.ui.events.ActionListener)

      • #getState()

      • #setState(int)

      Overrides:
      removeStateChangeListener in class Component
    • addActionListener

      public void addActionListener(ActionListener<ActionEvent> l)

      Adds a listener to the button which will cause an event to dispatch on click

      Parameters
      • l: implementation of the action listener interface
      Specified by:
      addActionListener in interface ActionSource<ActionEvent>
    • removeActionListener

      public void removeActionListener(ActionListener<ActionEvent> l)

      Removes the given action listener from the button

      Parameters
      • l: implementation of the action listener interface
      Specified by:
      removeActionListener in interface ActionSource<ActionEvent>
    • getActionListeners

      public Vector<ActionListener<ActionEvent>> getActionListeners()

      Returns a vector containing the action listeners for this button

      Returns

      the action listeners

      Deprecated

      use getListeners instead

    • getListeners

      public Collection<ActionListener<ActionEvent>> getListeners()

      Returns a collection containing the action listeners for this button

      Returns

      the action listeners

    • getIconFromState

      public Image getIconFromState()

      Returns the icon for the button based on its current state

      Returns

      the button icon based on its current state

      Specified by:
      getIconFromState in interface SelectableIconHolder
    • fireActionEvent

      protected void fireActionEvent(int x, int y)

      Allows subclasses to override action event behavior

      Parameters
      • x: the x position of the click if applicable (can be 0 or -1 otherwise)

      • y: the y position of the click if applicable (can be 0 or -1 otherwise)

    • pressed

      public void pressed()
      Invoked to change the state of the button to the pressed state
    • released

      public void released()
      Invoked to change the state of the button to the released state
    • released

      public void released(int x, int y)

      Invoked to change the state of the button to the released state

      Parameters
      • x: the x position if a touch event triggered this, -1 if this isn't relevant

      • y: the y position if a touch event triggered this, -1 if this isn't relevant

    • keyPressed

      public void keyPressed(int keyCode)

      If this Component is focused, the key pressed event will call this method

      Parameters
      • keyCode: the key code value to indicate a physical key.
      Overrides:
      keyPressed in class Component
    • keyReleased

      public void keyReleased(int keyCode)

      If this Component is focused, the key released event will call this method

      Parameters
      • keyCode: the key code value to indicate a physical key.
      Overrides:
      keyReleased in class Component
    • keyRepeated

      public void keyRepeated(int keyCode)

      If this Component is focused, the key repeat event will call this method.

      Parameters
      • keyCode: the key code value to indicate a physical key.
      Overrides:
      keyRepeated in class Component
    • fireClicked

      protected void fireClicked()
      When working in 3 softbutton mode "fire" key (center softbutton) is sent to this method in order to allow 3 button devices to work properly. When overriding this method you should also override isSelectableInteraction to indicate that a command is placed appropriately on top of the fire key for 3 soft button phones.
      Overrides:
      fireClicked in class Component
    • isSelectableInteraction

      protected boolean isSelectableInteraction()

      This method allows a component to indicate that it is interested in an "implicit" select command to appear in the "fire" button when 3 softbuttons are defined in a device.

      Returns

      true if this is a selectable interaction

      Overrides:
      isSelectableInteraction in class Component
    • pointerHover

      public void pointerHover(int[] x, int[] y)

      Invoked for devices where the pointer can hover without actually clicking the display. This is true for PC mouse pointer as well as some devices such as the BB storm.

      Parameters
      • x: the pointer x coordinate

      • y: the pointer y coordinate

      Overrides:
      pointerHover in class Component
    • pointerHoverReleased

      public void pointerHoverReleased(int[] x, int[] y)

      Invoked for devices where the pointer can hover without actually clicking the display. This is true for PC mouse pointer as well as some devices such as the BB storm.

      Parameters
      • x: the pointer x coordinate

      • y: the pointer y coordinate

      Overrides:
      pointerHoverReleased in class Component
    • pointerPressed

      public void pointerPressed(int x, int y)

      If this Component is focused, the pointer pressed event will call this method

      Parameters
      • x: the pointer x coordinate

      • y: the pointer y coordinate

      Overrides:
      pointerPressed in class Component
    • pointerReleased

      public void pointerReleased(int x, int y)

      If this Component is focused, the pointer released event will call this method

      Parameters
      • x: the pointer x coordinate

      • y: the pointer y coordinate

      Overrides:
      pointerReleased in class Component
    • dragInitiated

      protected void dragInitiated()
      Invoked on the focus component to let it know that drag has started on the parent container for the case of a component that doesn't support scrolling
      Overrides:
      dragInitiated in class Component
    • calcPreferredSize

      protected Dimension calcPreferredSize()

      Calculates the preferred size based on component content. This method is invoked lazily by getPreferred size.

      Returns

      the calculated preferred size based on component content

      Overrides:
      calcPreferredSize in class Label
    • getBorder

      protected Border getBorder()

      Normally returns getStyle().getBorder() but some subclasses might use this to programmatically replace the border in runtime e.g. for a pressed border effect

      Returns

      the border that is drawn according to the current component state

      Overrides:
      getBorder in class Component
    • getCommand

      public Command getCommand()

      This method return the Button Command if exists

      Returns

      Command Object or null if a Command not exists

    • setCommand

      public void setCommand(Command cmd)

      Applies the given command to this button

      Parameters
      • cmd: the command on the button
    • isSelected

      public boolean isSelected()

      Returns true if the button is selected for toggle buttons,

      Returns

      true if the button is selected

    • setAlignment

      public void setAlignment(int align)

      Sets the Alignment of the Label to one of: CENTER, LEFT, RIGHT

      Parameters
      • align: alignment value
      Deprecated

      use Style.setAlignment instead

      See also
      • #CENTER

      • #LEFT

      • #RIGHT

      Deprecated

      use the Style alignment instead

      Overrides:
      setAlignment in class Label
    • isToggle

      public boolean isToggle()

      Toggle button mode is only relevant for checkboxes/radio buttons. When pressed a toggle button stays pressed and when pressed again it moves to releleased state.

      Returns

      the toggle

    • setToggle

      public void setToggle(boolean toggle)

      Toggle button mode is only relevant for checkboxes/radio buttons. When pressed a toggle button stays pressed and when pressed again it moves to releleased state. Setting toggle implicitly changes the UIID to "ToggleButton"

      Parameters
      • toggle: the toggle to set
    • setUIID

      public void setUIID(String id)

      Overriden to workaround issue with caps text and different UIID's

      This method sets the Component the Unique identifier. This method should be used before a component has been initialized

      Parameters
      • id: UIID unique identifier for component type
      Overrides:
      setUIID in class Label
    • animate

      public boolean animate()

      Allows the animation to reduce "repaint" calls when it returns false. It is called once for every frame. Frames are defined by the com.codename1.ui.Display class.

      Returns

      true if a repaint is desired or false if no repaint is necessary

      Specified by:
      animate in interface Animation
      Overrides:
      animate in class Label
    • isOppositeSide

      public boolean isOppositeSide()

      Places the check box or radio button on the opposite side at the far end

      Returns

      the oppositeSide

    • getReleaseRadius

      public int getReleaseRadius()

      Indicates a radius in which a pointer release will still have effect. Notice that this only applies to pointer release events and not to pointer press events

      Returns

      the releaseRadius

      Specified by:
      getReleaseRadius in interface ReleasableComponent
    • setReleaseRadius

      public void setReleaseRadius(int releaseRadius)

      Indicates a radius in which a pointer release will still have effect. Notice that this only applies to pointer release events and not to pointer press events

      Parameters
      • releaseRadius: the releaseRadius to set
      Specified by:
      setReleaseRadius in interface ReleasableComponent
    • isAutoRelease

      public boolean isAutoRelease()

      Returns if this is an auto released Button. Auto released Buttons will are been disarmed when a drag is happening within the Button.

      Returns

      true if it's an auto released Button.

      Specified by:
      isAutoRelease in interface ReleasableComponent
    • setAutoRelease

      public void setAutoRelease(boolean autoRelease)
      Sets the auto released mode of this button, by default it's not an auto released Button
      Specified by:
      setAutoRelease in interface ReleasableComponent
    • paint

      public void paint(Graphics g)
      Description copied from class: Label

      This method paints the Component on the screen, it should be overriden by subclasses to perform custom drawing or invoke the UI API's to let the PLAF perform the rendering.

      Parameters
      • g: the component graphics
      Specified by:
      paint in interface Animation
      Overrides:
      paint in class Label
    • isCapsText

      public final boolean isCapsText()

      Indicates whether text on the button should be drawn capitalized by default to match the Android design. By default only Button and RaisedButton will be capped to keep compatibility. You can add additional UIID's to the mix by using the theme constant capsButtonUiids which can include a separated list of the UIID's to capitalize

      Returns

      the capsText

    • setCapsText

      public void setCapsText(boolean capsText)

      Indicates whether text on the button should be drawn capitalized by default to match the Android design. By default only Button and RaisedButton will be capped to keep compatibility. You can add additional UIID's to the mix by using the theme constant capsButtonUiids which can include a separated list of the UIID's to capitalize

      Parameters
      • capsText: the capsText to set
    • setText

      public void setText(String t)

      Overriden to implement the caps mode #setCapsText(boolean)

      Sets the Label text

      Parameters
      • text: the string that the label presents.
      Specified by:
      setText in interface TextHolder
      Overrides:
      setText in class Label