# Class Button

java.lang.Object
com.codename1.ui.Component
com.codename1.ui.Label
com.codename1.ui.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 Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final int`
  `STATE_DEFAULT`
  Indicates the default state of a button which is neither pressed nor focused
  `static final int`
  `STATE_PRESSED`
  Indicates the pressed state of a button
  `static final int`
  `STATE_ROLLOVER`
  Indicates the rollover state of a button which is equivalent to focused for most uses

  ### Fields inherited from class Component

  `BASELINE, BOTTOM, BRB_CENTER_OFFSET, BRB_CONSTANT_ASCENT, BRB_CONSTANT_DESCENT, BRB_OTHER, CENTER, CROSSHAIR_CURSOR, DEFAULT_CURSOR, DRAG_REGION_IMMEDIATELY_DRAG_X, DRAG_REGION_IMMEDIATELY_DRAG_XY, DRAG_REGION_IMMEDIATELY_DRAG_Y, DRAG_REGION_LIKELY_DRAG_X, DRAG_REGION_LIKELY_DRAG_XY, DRAG_REGION_LIKELY_DRAG_Y, DRAG_REGION_NOT_DRAGGABLE, DRAG_REGION_POSSIBLE_DRAG_X, DRAG_REGION_POSSIBLE_DRAG_XY, DRAG_REGION_POSSIBLE_DRAG_Y, E_RESIZE_CURSOR, HAND_CURSOR, LEFT, MOVE_CURSOR, N_RESIZE_CURSOR, NE_RESIZE_CURSOR, NW_RESIZE_CURSOR, RIGHT, S_RESIZE_CURSOR, SE_RESIZE_CURSOR, SW_RESIZE_CURSOR, TEXT_CURSOR, TOP, W_RESIZE_CURSOR, WAIT_CURSOR`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `Button()`
  Constructs a button with an empty string for its text.
  `Button(char icon)`
  Constructs a button with the specified material image icon.
  `Button(char icon, float iconSize, String id)`
  Constructor a button with material image icon and UIID
  `Button(char icon, String id)`
  Constructor a button with material image icon and UIID
  `Button(Command cmd)`
  Allows binding a command to a button for ease of use
  `Button(Image icon)`
  Constructs a button with the specified image.
  `Button(Image icon, String id)`
  Constructor a button with image and UIID
  `Button(String text)`
  Constructs a button with the specified text.
  `Button(String text, char icon, float iconSize, String id)`
  Constructor a button with text, material image and uiid
  `Button(String text, char icon, String id)`
  Constructor a button with text, material image and uiid
  `Button(String text, Image icon)`
  Constructor a button with text and image
  `Button(String text, Image icon, String id)`
  Constructor a button with text, image and uiid
  `Button(String text, String id)`
  Constructor a button with text and UIID

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `addActionListener(ActionListener<ActionEvent> l)`
  Adds a listener to the button which will cause an event to dispatch on click
  `void`
  `addStateChangeListener(ActionListener<ComponentStateChangeEvent> l)`
  Adds a listener to be notified when the button state changes.
  `boolean`
  `animate()`
  Allows the animation to reduce "repaint" calls when it returns false.
  `void`
  `bindStateTo(Button button)`
  Bind the state of this button to another button's state.
  `protected Dimension`
  `calcPreferredSize()`
  Calculates the preferred size based on component content.
  `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
  `protected void`
  `fireActionEvent(int x, int y)`
  Allows subclasses to override action event behavior for pointer coordinates.
  `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.
  `Vector<ActionListener<ActionEvent>>`
  `getActionListeners()`
  Returns a vector containing the action listeners for this button
  `protected Border`
  `getBorder()`
  Normally returns getStyle().getBorder() but some subclasses might use this to programmatically replace the border in runtime e.g.
  `Command`
  `getCommand()`
  This method return the Button Command if exists
  `Image`
  `getDisabledIcon()`
  Indicates the icon that is displayed on the button when the button is in the disabled state
  `Image`
  `getIconFromState()`
  Returns the icon for the button based on its current state
  `Collection<ActionListener<ActionEvent>>`
  `getListeners()`
  Returns a collection containing the action listeners for this button
  `Image`
  `getPressedIcon()`
  Indicates the icon that is displayed on the button when the button is in pressed state
  `int`
  `getReleaseRadius()`
  Indicates a radius in which a pointer release will still have effect.
  `Image`
  `getRolloverIcon()`
  Indicates the icon that is displayed on the button when the button is in rolled over state
  `Image`
  `getRolloverPressedIcon()`
  Indicates the icon that is displayed on the button when the button is in pressed state and is selected.
  `int`
  `getState()`
  Returns the button state
  `boolean`
  `isAutoRelease()`
  Returns if this is an auto released Button.
  `static boolean`
  `isButtonRippleEffectDefault()`
  Default value for the button ripple effect, this can be set with the theme constant buttonRippleBool
  `final boolean`
  `isCapsText()`
  Indicates whether text on the button should be drawn capitalized by default to match the Android design.
  `static boolean`
  `isCapsTextDefault()`
  Indicates whether text on the button should be drawn capitalized by default to match the Android design.
  `boolean`
  `isOppositeSide()`
  Places the check box or radio button on the opposite side at the far end
  `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.
  `boolean`
  `isSelected()`
  Returns true if the button is selected for toggle buttons,
  `boolean`
  `isToggle()`
  Toggle button mode is only relevant for checkboxes/radio buttons.
  `void`
  `keyPressed(int keyCode)`
  If this Component is focused, the key pressed event will call this method
  `void`
  `keyReleased(int keyCode)`
  If this Component is focused, the key released event will call this method
  `void`
  `keyRepeated(int keyCode)`
  If this Component is focused, the key repeat event will call this method.
  `void`
  `paint(Graphics g)`
  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.
  `void`
  `pointerHover(int[] x, int[] y)`
  Invoked for devices where the pointer can hover without actually clicking the display.
  `void`
  `pointerHoverReleased(int[] x, int[] y)`
  Invoked for devices where the pointer can hover without actually clicking the display.
  `void`
  `pointerPressed(int x, int y)`
  If this Component is focused, the pointer pressed event will call this method
  `void`
  `pointerReleased(int x, int y)`
  If this Component is focused, the pointer released event will call this method
  `void`
  `pressed()`
  Invoked to change the state of the button to the pressed state
  `void`
  `released()`
  Invoked to change the state of the button to the released state
  `void`
  `released(int x, int y)`
  Invoked to change the state of the button to the released state
  `void`
  `removeActionListener(ActionListener<ActionEvent> l)`
  Removes the given action listener from the button
  `void`
  `removeStateChangeListener(ActionListener<ComponentStateChangeEvent> l)`
  Removes state change listener.
  `protected void`
  `resetFocusable()`
  Restores the state of the focusable flag to its default state
  `void`
  `setAlignment(int align)`
  Sets the Alignment of the Label to one of: CENTER, LEFT, RIGHT
  `void`
  `setAutoRelease(boolean autoRelease)`
  Sets the auto released mode of this button, by default it's not an auto released Button
  `static void`
  `setButtonRippleEffectDefault(boolean aButtonRippleEffectDefault)`
  Default value for the button ripple effect, this can be set with the theme constant buttonRippleBool
  `void`
  `setCapsText(boolean capsText)`
  Indicates whether text on the button should be drawn capitalized by default to match the Android design.
  `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
  `void`
  `setCommand(Command cmd)`
  Applies the given command to this button
  `void`
  `setDisabledIcon(Image disabledIcon)`
  Indicates the icon that is displayed on the button when the button is in the disabled state
  `void`
  `setPressedIcon(Image pressedIcon)`
  Indicates the icon that is displayed on the button when the button is in pressed state
  `void`
  `setReleased()`
  Set the button in released and unfocused state
  `void`
  `setReleaseRadius(int releaseRadius)`
  Indicates a radius in which a pointer release will still have effect.
  `void`
  `setRolloverIcon(Image rolloverIcon)`
  Indicates the icon that is displayed on the button when the button is in rolled over state
  `void`
  `setRolloverPressedIcon(Image rolloverPressedIcon)`
  Indicates the icon that is displayed on the button when the button is in pressed state and is selected.
  `void`
  `setText(String t)`
  Overriden to implement the caps mode `#setCapsText(boolean)` Sets the Label text
  `void`
  `setToggle(boolean toggle)`
  Toggle button mode is only relevant for checkboxes/radio buttons.
  `void`
  `setUIID(String id)`
  Overriden to workaround issue with caps text and different UIID's This method sets the Component the Unique identifier.
  `void`
  `unbindStateFrom(Button button)`
  Unbinds the state of this button from another button.

  ### Methods inherited from class Label

  `bindProperty, getAlignment, getBadgeStyleComponent, getBadgeText, getBaseline, getBaselineResizeBehavior, getBindablePropertyNames, getBindablePropertyTypes, getBoundPropertyValue, getDefaultGap, getFontIcon, getFontIconSize, getGap, getIcon, getIconFont, getIconStyleComponent, getIconUIID, getMask, getMaskedIcon, getMaskName, getMaterialIcon, getMaterialIconSize, getMaxAutoSize, getMinAutoSize, getPropertyNames, getPropertyTypeNames, getPropertyTypes, getPropertyValue, getShiftMillimeters, getShiftMillimetersF, getShiftText, getStringWidth, getText, getTextPosition, getTextSelectionSupport, getVerticalAlignment, initLaf, initUnselectedStyle, isAutoSizeMode, isDefaultTickerEnabled, isEndsWith3Points, isLegacyRenderer, isShouldLocalize, isShowEvenIfBlank, isTextSelectionEnabled, isTickerEnabled, isTickerRunning, laidOut, paramString, refreshTheme, setAutoSizeMode, setBadgeText, setBadgeUIID, setBoundPropertyValue, setDefaultGap, setDefaultTickerEnabled, setEndsWith3Points, setFontIcon, setFontIcon, setFontIcon, setGap, setIcon, setIconUIID, setLegacyRenderer, setMask, setMaskName, setMaterialIcon, setMaterialIcon, setMaxAutoSize, setMinAutoSize, setPropertyValue, setShiftMillimeters, setShiftMillimeters, setShiftText, setShouldLocalize, setShowEvenIfBlank, setTextPosition, setTextSelectionEnabled, setTickerEnabled, setVerticalAlignment, shouldTickerStart, startTicker, startTicker, stopTicker, styleChanged, unbindProperty`

  ### Methods inherited from class Component

  `accessibilityChanged, accessibilityChanged, addContextMenuListener, addDragFinishedListener, addDragOverListener, addDropListener, addFocusListener, addLongPressListener, addMouseWheelListener, addNativeDragOverListener, addNativeDropListener, addPointerDraggedListener, addPointerPressedListener, addPointerReleasedListener, addPullToRefresh, addScrollListener, addStylusListener, announceForAccessibility, blocksSideSwipe, calcScrollSize, canAcceptNativeDrop, cancelRepaints, clearClientProperties, consumesRawTextInput, contains, containsOrOwns, createNativeDragOperation, createStyleAnimation, deinitialize, deinitializeCustomStyle, deregisterFromAnimation, dragEnter, dragExit, dragFinished, draggingOver, drawDraggedImage, drop, focusGained, focusLost, getAbsoluteX, getAbsoluteY, getAcceptedDropActions, getAcceptedDropMimeTypes, getAccessibilityNode, getAccessibilityText, getAllStyles, getAnimationManager, getBottomGap, getBounds, getBounds, getClientProperty, getCloudBoundProperty, getCloudDestinationProperty, getComponentForm, getComponentState, getCursor, getDefaultDragTransparency, getDirtyRegion, getDisabledStyle, getDraggedx, getDraggedy, getDragImage, getDragRegionStatus, getDragSpeed, getDragTransparency, getEditingDelegate, getGridPosX, getGridPosY, getHeight, getInlineAllStyles, getInlineDisabledStyles, getInlinePressedStyles, getInlineSelectedStyles, getInlineStylesTheme, getInlineUnselectedStyles, getInnerHeight, getInnerPreferredH, getInnerPreferredW, getInnerWidth, getInnerX, getInnerY, getLabelForComponent, getName, getNativeDragOperation, getNativeOverlay, getNextFocusDown, getNextFocusLeft, getNextFocusRight, getNextFocusUp, getOuterHeight, getOuterPreferredH, getOuterPreferredW, getOuterWidth, getOuterX, getOuterY, getOwner, getParent, getPreferredH, getPreferredSize, getPreferredSizeStr, getPreferredTabIndex, getPreferredW, getPressedStyle, getSameHeight, getSameWidth, getScrollable, getScrollAnimationSpeed, getScrollDimension, getScrollOpacity, getScrollOpacityChangeSpeed, getScrollX, getScrollY, getSelectCommandText, getSelectedRect, getSelectedStyle, getSemantics, getSideGap, getStyle, getTabIndex, getTensileLength, getTooltip, getTopLevelContainer, getUIID, getUIManager, getUnselectedStyle, getVisibleBounds, getVisibleBounds, getWidth, getX, getY, growShrink, handlesInput, hasFixedPreferredSize, hasFocus, hideNativeOverlay, initComponent, initCustomStyle, initDisabledStyle, initPressedStyle, initSelectedStyle, installDefaultPainter, isAlwaysTensile, isBlockLead, isCellRenderer, isChildOf, isDragActivated, isDragAndDropOperation, isDraggable, isDragRegion, isDropTarget, isEditable, isEditing, isEnabled, isFlatten, isFocusable, isGrabsPointerEvents, isHidden, isHidden, isHideInLandscape, isHideInPortrait, isHScrollThumbGrabbed, isHScrollThumbHover, isIgnorePointerEvents, isInClippingRegion, isInitialized, isNativeDragSource, isNativeDropTarget, isOpaque, isOwnedBy, isPinchBlocksDragAndDrop, isRippleEffect, isRTL, isScrollable, isScrollableX, isScrollableY, isScrollVisible, isSetCursorSupported, isSmoothScrolling, isSnapToGrid, isStickyDrag, isTactileTouch, isTactileTouch, isTensileDragEnabled, isTraversable, isVisible, isVScrollThumbGrabbed, isVScrollThumbHover, longKeyPress, longPointerPress, mouseWheel, nativeDragEnter, nativeDragExit, nativeDragOver, nativeDrop, onScrollX, onScrollY, onSetFocusable, paintBackground, paintBackgrounds, paintBorder, paintBorderBackground, paintComponent, paintComponent, paintIntersectingComponentsAbove, paintLock, paintLockRelease, paintRippleOverlay, paintScrollbars, paintScrollbarX, paintScrollbarY, paintShadows, parsePreferredSize, pinch, pinch, pinchReleased, pointerDragged, pointerDragged, pointerHoverPressed, pointerPressed, pointerReleased, putClientProperty, refreshTheme, refreshTheme, registerForAnimation, remove, removeContextMenuListener, removeDragFinishedListener, removeDragOverListener, removeDropListener, removeFocusListener, removeLongPressListener, removeMouseWheelListener, removeNativeDragOverListener, removeNativeDropListener, removePointerDraggedListener, removePointerPressedListener, removePointerReleasedListener, removeScrollListener, removeStylusListener, repaint, repaint, requestFocus, respondsToPointerEvents, rotation, scrollRectToVisible, scrollRectToVisible, setAcceptedDropActions, setAcceptedDropMimeTypes, setAccessibilityText, setAlwaysTensile, setBlockLead, setCellRenderer, setCloudBoundProperty, setCloudDestinationProperty, setComponentState, setCursor, setDefaultDragTransparency, setDirtyRegion, setDisabledStyle, setDraggable, setDragTransparency, setDropTarget, setEditingDelegate, setEnabled, setFlatten, setFocus, setFocusable, setGrabsPointerEvents, setHandlesInput, setHeight, setHidden, setHidden, setHideInLandscape, setHideInPortrait, setHorizontalScrollBounds, setIgnorePointerEvents, setInitialized, setInlineAllStyles, setInlineDisabledStyles, setInlinePressedStyles, setInlineSelectedStyles, setInlineStylesTheme, setInlineUnselectedStyles, setIsScrollVisible, setLabelForComponent, setName, setNativeDragOperation, setNativeDragSource, setNativeDropTarget, setNextFocusDown, setNextFocusLeft, setNextFocusRight, setNextFocusUp, setOpaque, setOwner, setPinchBlocksDragAndDrop, setPreferredH, setPreferredSize, setPreferredSizeStr, setPreferredTabIndex, setPreferredW, setPressedStyle, setPullToRefresh, setRippleEffect, setRTL, setSameHeight, setSameSize, setSameWidth, setScrollAnimationSpeed, setScrollOpacityChangeSpeed, setScrollSize, setScrollVisible, setScrollX, setScrollY, setSelectCommandText, setSelectedStyle, setShouldCalcPreferredSize, setSize, setSmoothScrolling, setSnapToGrid, setTabIndex, setTactileTouch, setTensileDragEnabled, setTensileLength, setTooltip, setTraversable, setUIID, setUIIDFinal, setUnselectedStyle, setVerticalScrollBounds, setVisible, setWidth, setX, setY, shouldBlockSideSwipe, shouldBlockSideSwipeLeft, shouldBlockSideSwipeRight, shouldRenderComponentSelection, showNativeOverlay, startEditingAsync, stopEditing, stopScrollMomentum, stripMarginAndPadding, toImage, toString, updateNativeOverlay, visibleBoundsContains`

  ### Methods inherited from class Object

  `clone, equals, getClass, hashCode, notify, notifyAll, wait, wait, wait`

  ### Methods inherited from interface IconHolder

  `getGap, getIcon, getIconStyleComponent, getIconUIID, getTextPosition, setFontIcon, setGap, setIcon, setIconUIID, setMaterialIcon, setTextPosition`

- ## 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:
      - Constant Field Values

  - ### STATE_PRESSED

    public static final int STATE_PRESSED
    Indicates the pressed state of a button
    See Also:
      - Constant Field Values

  - ### STATE_DEFAULT

    public static final int STATE_DEFAULT
    Indicates the default state of a button which is neither pressed nor focused
    See Also:
      - Constant Field Values

- ## 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.

    ###### 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.

    ###### 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

    ###### 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.

    ###### 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 for pointer coordinates.

    ###### 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`