# Class TextArea

java.lang.Object
com.codename1.ui.Component
com.codename1.ui.TextArea

All Implemented Interfaces:
  `Animation, Editable, ActionSource, StyleListener, TextHolder`

Direct Known Subclasses:
  `TextField`

public class TextArea extends Component implements ActionSource, TextHolder

An optionally multi-line editable region that can display text and allow a user to edit it. By default the text area will grow based on its content.

`TextArea` is useful both for text input and for displaying multi-line data, it is used internally by components such as `com.codename1.components.SpanLabel` & `com.codename1.components.SpanButton`.

`TextArea` & `com.codename1.ui.TextField` are very similar, we discuss the main differences between the two `here`. In fact they are so similar that our sample code below was written for `com.codename1.ui.TextField` but should be interchangeable with `TextArea`.

    TableLayout tl;
    int spanButton = 2;
    if(Display.getInstance().isTablet()) {
        tl = new TableLayout(7, 2);
    } else {
        tl = new TableLayout(14, 1);
        spanButton = 1;
    }
    tl.setGrowHorizontally(true);
    hi.setLayout(tl);

    TextField firstName = new TextField("", "First Name", 20, TextArea.ANY);
    TextField surname = new TextField("", "Surname", 20, TextArea.ANY);
    TextField email = new TextField("", "E-Mail", 20, TextArea.EMAILADDR);
    TextField url = new TextField("", "URL", 20, TextArea.URL);
    TextField phone = new TextField("", "Phone", 20, TextArea.PHONENUMBER);

    TextField num1 = new TextField("", "1234", 4, TextArea.NUMERIC);
    TextField num2 = new TextField("", "1234", 4, TextArea.NUMERIC);
    TextField num3 = new TextField("", "1234", 4, TextArea.NUMERIC);
    TextField num4 = new TextField("", "1234", 4, TextArea.NUMERIC);

    Button submit = new Button("Submit");
    TableLayout.Constraint cn = tl.createConstraint();
    cn.setHorizontalSpan(spanButton);
    cn.setHorizontalAlign(Component.RIGHT);
    hi.add("First Name").add(firstName).
            add("Surname").add(surname).
            add("E-Mail").add(email).
            add("URL").add(url).
            add("Phone").add(phone).
            add("Credit Card").
                    add(GridLayout.encloseIn(4, num1, num2, num3, num4)).
            add(cn, submit);

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final int`
  `ANY`
  Allows any type of input into a text field, if a constraint is not supported by an underlying implementation this will be the default.
  `static final int`
  `DECIMAL`
  The user is allowed to enter numeric values with optional decimal fractions, for example "-123", "0.123", or ".5".
  `static final int`
  `EMAILADDR`
  The user is allowed to enter an e-mail address.
  `static final int`
  `INITIAL_CAPS_SENTENCE`
  This flag is a hint to the implementation that during text editing, the initial letter of each sentence should be capitalized.
  `static final int`
  `INITIAL_CAPS_WORD`
  This flag is a hint to the implementation that during text editing, the initial letter of each word should be capitalized.
  `static final int`
  `NON_PREDICTIVE`
  Indicates that the text entered does not consist of words that are likely to be found in dictionaries typically used by predictive input schemes.
  `static final int`
  `NUMERIC`
  The user is allowed to enter only an integer value.
  `static final int`
  `PASSWORD`
  Indicates that the text entered is confidential data that should be obscured whenever possible.
  `static final int`
  `PHONENUMBER`
  The user is allowed to enter a phone number.
  `static final int`
  `SENSITIVE`
  Indicates that the text entered is sensitive data that the implementation must never store into a dictionary or table for use in predictive, auto-completing, or other accelerated input schemes.
  `static final int`
  `UNEDITABLE`
  Indicates that editing is currently disallowed.
  `static final int`
  `UPPERCASE`
  This flag is a hint to the implementation that the text in this field should be upper case
  `static final int`
  `URL`
  The user is allowed to enter a URL.
  `static final int`
  `USERNAME`
  This flag is a hint to the implementation that this field contains a username.

  ### 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`
  Modifier and Type
  Field
  Description
  `static final int`
  `BASELINE`
  Alignment to the baseline constraint
  `static final int`
  `BOTTOM`
  Box-orientation constant used to specify the bottom of a box.
  `static final int`
  `BRB_CENTER_OFFSET`
  Baseline resize behavior constant used to properly align components.
  `static final int`
  `BRB_CONSTANT_ASCENT`
  Baseline resize behavior constant used to properly align components.
  `static final int`
  `BRB_CONSTANT_DESCENT`
  Baseline resize behavior constant used to properly align components.
  `static final int`
  `BRB_OTHER`
  Baseline resize behavior constant used to properly align components.
  `static final int`
  `CENTER`
  Indicates a Component center alignment
  `static final int`
  `CROSSHAIR_CURSOR`
  The crosshair cursor type.
  `static final int`
  `DEFAULT_CURSOR`
  The default cursor
  `static final int`
  `DRAG_REGION_IMMEDIATELY_DRAG_X`
  Used by getDragRegionStatus to indicate immediate dragability
  `static final int`
  `DRAG_REGION_IMMEDIATELY_DRAG_XY`
  Used by getDragRegionStatus to indicate immediate dragability
  `static final int`
  `DRAG_REGION_IMMEDIATELY_DRAG_Y`
  Used by getDragRegionStatus to indicate immediate dragability
  `static final int`
  `DRAG_REGION_LIKELY_DRAG_X`
  Used by getDragRegionStatus to indicate likely dragability
  `static final int`
  `DRAG_REGION_LIKELY_DRAG_XY`
  Used by getDragRegionStatus to indicate likely dragability
  `static final int`
  `DRAG_REGION_LIKELY_DRAG_Y`
  Used by getDragRegionStatus to indicate likely dragability
  `static final int`
  `DRAG_REGION_NOT_DRAGGABLE`
  Used by getDragRegionStatus to indicate no dragability
  `static final int`
  `DRAG_REGION_POSSIBLE_DRAG_X`
  Used by getDragRegionStatus to indicate limited dragability
  `static final int`
  `DRAG_REGION_POSSIBLE_DRAG_XY`
  Used by getDragRegionStatus to indicate limited dragability
  `static final int`
  `DRAG_REGION_POSSIBLE_DRAG_Y`
  Used by getDragRegionStatus to indicate limited dragability
  `static final int`
  `E_RESIZE_CURSOR`
  The east-resize cursor type.
  `static final int`
  `HAND_CURSOR`
  The hand cursor type.
  `static final int`
  `LEFT`
  Box-orientation constant used to specify the left side of a box.
  `static final int`
  `MOVE_CURSOR`
  The move cursor type.
  `static final int`
  `N_RESIZE_CURSOR`
  The north-resize cursor type.
  `static final int`
  `NE_RESIZE_CURSOR`
  The north-east-resize cursor type.
  `static final int`
  `NW_RESIZE_CURSOR`
  The north-west-resize cursor type.
  `static final int`
  `RIGHT`
  Box-orientation constant used to specify the right side of a box.
  `static final int`
  `S_RESIZE_CURSOR`
  The south-resize cursor type.
  `static final int`
  `SE_RESIZE_CURSOR`
  The south-east-resize cursor type.
  `static final int`
  `SW_RESIZE_CURSOR`
  The south-west-resize cursor type.
  `static final int`
  `TEXT_CURSOR`
  The text cursor type.
  `static final int`
  `TOP`
  Box-orientation constant used to specify the top of a box.
  `static final int`
  `W_RESIZE_CURSOR`
  The west-resize cursor type.
  `static final int`
  `WAIT_CURSOR`
  The wait cursor type.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `TextArea()`
  Creates an empty text area, this constructor will create a single line text area similar to a text field!
  `TextArea(int rows, int columns)`
  Creates an area with the given rows and columns
  `TextArea(int rows, int columns, int constraint)`
  Creates an area with the given rows, columns and constraint
  `TextArea(String text)`
  Creates an area with the given text, this constructor will create a single line text area similar to a text field!
  `TextArea(String text, int maxSize)`
  Creates an area with the given text and maximum size, this constructor will create a single line text area similar to a text field!
  `TextArea(String text, int rows, int columns)`
  Creates an area with the given text, rows and columns
  `TextArea(String text, int rows, int columns, int constraint)`
  Creates an area with the given text, rows, columns and constraint

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `addActionListener(ActionListener a)`
  Add an action listener which is invoked when the text area was modified not during modification.
  `void`
  `addCloseListener(ActionListener l)`
  Adds a listener to be called with this TextArea is "closed".
  `void`
  `addDataChangedListener(DataChangedListener d)`
  Adds a listener for data change events it will be invoked for every change made to the text field, notice most platforms will invoke only the DataChangedListener.CHANGED event
  `void`
  `addDataChangeListener(DataChangedListener d)`
  Adds a listener for data change events it will be invoked for every change made to the text field, notice most platforms will invoke only the DataChangedListener.CHANGED event
  `static void`
  `autoDetectWidestChar(String s)`
  Searches the given string for the widest character using char width, this operation should only be performed once and it solves cases where a devices language might have a char bigger than 'W' that isn't consistently bigger.
  `void`
  `bindProperty(String prop, BindTarget target)`
  Binds the given property name to the given bind target
  `protected Dimension`
  `calcPreferredSize()`
  Calculates the preferred size based on component content.
  `protected Dimension`
  `calcScrollSize()`
  Method that can be overriden to represent the actual size of the component when it differs from the desireable size for the viewport
  `protected TextSelection.Spans`
  `calculateTextSelectionSpan(TextSelection sel)`
  Calculates the spans for the the given text selection.
  `protected void`
  `deinitialize()`
  Invoked to indicate that the component initialization is being reversed since the component was detached from the container hierarchy.
  `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.
  `void`
  `fireDataChanged(int type, int index)`
  Alert the TextField listeners the text has been changed on the TextField
  `void`
  `fireDoneEvent()`
  Fire the done event to done listener
  `void`
  `fireDoneEvent(int keyEvent)`
  `int`
  `getAbsoluteAlignment()`
  Returns the absolute alignment of the TextArea In RTL LEFT alignment is actually RIGHT, but this method returns the actual alignment
  `int`
  `getActualRows()`
  Returns the number of actual rows in the text area taking into consideration growsByContent
  `int`
  `getAlignment()`
  Returns the alignment of the TextArea
  `double`
  `getAsDouble(double invalid)`
  Convenience method for numeric text fields, returns the value as a number or invalid if the value in the text field isn't a number
  `int`
  `getAsInt(int invalid)`
  Convenience method for numeric text fields, returns the value as a number or invalid if the value in the text field isn't a number
  `long`
  `getAsLong(long invalid)`
  Convenience method for numeric text fields, returns the value as a number or invalid if the value in the text field isn't a number
  `String[]`
  `getBindablePropertyNames()`
  Returns the names of the properties within this component that can be bound for persistence, the order of these names mean that the first one will be the first bound
  `Class[]`
  `getBindablePropertyTypes()`
  Returns the types of the properties that are bindable within this component
  `Object`
  `getBoundPropertyValue(String prop)`
  Allows the binding code to extract the value of the property
  `int`
  `getColumns()`
  Returns the number of columns in the text area
  `int`
  `getConstraint()`
  Returns the editing constraint value
  `int`
  `getCursorPosition()`
  Returns the position of the cursor char position
  `int`
  `getCursorX()`
  Returns the position of the cursor char position in the current line.
  `int`
  `getCursorY()`
  Returns the position of the cursor line position
  `static int`
  `getDefaultValign()`
  Indicates the default vertical alignment for a text field.
  `ActionListener`
  `getDoneListener()`
  Gets the done listener of this TextField.
  `int`
  `getGrowLimit()`
  Indicates the maximum number of rows in a text area after it has grown, -1 indicates no limit
  `String`
  `getHint()`
  Returns the hint text
  `Image`
  `getHintIcon()`
  Returns the hint icon
  `Label`
  `getHintLabel()`
  Returns the hint label component that can be customized directly
  `String`
  `getInputMode()`
  Returns the currently selected input mode
  `String[]`
  `getInputModeOrder()`
  Returns the order in which input modes are toggled
  `int`
  `getLines()`
  Returns the number of text lines in the TextArea
  `int`
  `getLinesToScroll()`
  Indicates the number of lines to scroll with every scroll operation
  `int`
  `getMaxSize()`
  Returns the maximum size for the text area
  `int`
  `getPreferredTabIndex()`
  Gets the preferred tab index of this component.
  `int`
  `getRows()`
  Returns the number of rows in the text area
  `int`
  `getRowsGap()`
  Gets the num of pixels gap between the rows
  `Style`
  `getStyle()`
  Returns the current Component Style allowing code to draw the current component, you should normally use getUnselected/Pressed/DisabledStyle() and not this method since it will return different values based on component state.
  `String`
  `getText()`
  Returns the text in the text area
  `String`
  `getTextAt(int line)`
  Returns the text in the given row of the text box
  `TextSelection.TextSelectionSupport`
  `getTextSelectionSupport()`
  Returns text selection support object for this component.
  `String`
  `getUnsupportedChars()`
  Unsupported characters is a string that contains characters that cause issues when rendering on some problematic fonts.
  `int`
  `getVerticalAlignment()`
  Returns the vertical alignment of the text field.
  `static char`
  `getWidestChar()`
  Indicates the widest character in the alphabet, this is useful for detecting linebreaks internally.
  `protected void`
  `initComponent()`
  Allows subclasses to bind functionality that relies on fully initialized and "ready for action" component state
  `protected void`
  `initLaf(UIManager uim)`
  This method initializes the Component defaults constants
  `boolean`
  `isActAsLabel()`
  This flag indicates that the text area should try to act as a label and try to fix more accurately within it's bounds this might make it slower as a result
  `static boolean`
  `isAutoDegradeMaxSize()`
  Indicates whether a high value for default maxSize will be reduced to a lower value if the underlying platform throws an exception.
  `boolean`
  `isEditable()`
  Returns true if this area is editable
  `boolean`
  `isEditing()`
  Indicates whether we are currently editing this text area
  `boolean`
  `isEnableInputScroll()`
  Indicates whether text field input should scroll to the right side when no more room for the input is present.
  `boolean`
  `isEndsWith3Points()`
  If the TextArea text is too long to fit the text to the widget this will add "..." at the last displayable row.
  `protected boolean`
  `isEnterKey(int keyCode)`
  Indicates the enter key to be used for editing the text area and by the text field
  `boolean`
  `isGrowByContent()`
  Indicates that the text area should "grow" in height based on the content beyond the limits indicate by the rows variable
  `boolean`
  `isPendingCommit()`
  Returns true if the text field is waiting for a commit on editing
  `boolean`
  `isQwertyInput()`
  True is this is a qwerty device or a device that is currently in qwerty mode.
  `boolean`
  `isScrollableY()`
  Indicates whether the component should/could scroll on the Y axis
  `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`
  `isSingleLineTextArea()`
  Indicates whether this is a single line text area, in which case "growing" won't work as expected.
  `boolean`
  `isTextSelectionEnabled()`
  Returns true if text selection is enabled on this label.
  `static boolean`
  `isUseStringWidth()`
  By default text area uses charWidth since its much faster on some devices than string width.
  `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`
  `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`
  `pointerReleased(int x, int y)`
  If this Component is focused, the pointer released event will call this method
  `protected char[]`
  `preprocess(String text)`
  Override this to modify the text for rendering in cases of invalid characters for display, this method allows the developer to replace such characters e.g.: replace "\t" with 4 spaces
  `void`
  `registerAsInputDevice()`
  Registers this TextArea as the current input device for the current form.
  `void`
  `removeActionListener(ActionListener a)`
  Removes an action listener
  `void`
  `removeCloseListener(ActionListener l)`
  Removes close listener.
  `void`
  `removeDataChangedListener(DataChangedListener d)`
  Removes the listener for data change events
  `void`
  `removeDataChangeListener(DataChangedListener d)`
  Removes the listener for data change events
  `void`
  `setActAsLabel(boolean actAsLabel)`
  This flag indicates that the text area should try to act as a label and try to fix more accurately within it's bounds this might make it slower as a result
  `void`
  `setAlignment(int align)`
  Sets the Alignment of the TextArea to one of: CENTER, LEFT, RIGHT
  `static void`
  `setAutoDegradeMaxSize(boolean value)`
  Indicates whether a high value for default maxSize will be reduced to a lower value if the underlying platform throws an exception.
  `void`
  `setBoundPropertyValue(String prop, Object value)`
  Sets the value of a bound property within this component, notice that this method MUST NOT fire the property change event when invoked to prevent recursion!
  `void`
  `setColumns(int columns)`
  Sets the number of columns in the text area
  `void`
  `setConstraint(int constraint)`
  Sets the constraint which provides a hint to the virtual keyboard input, notice this doesn't limit input type in any way!
  `static void`
  `setDefaultMaxSize(int value)`
  Sets the default limit for the native text box size
  `static void`
  `setDefaultValign(int aDefaultValign)`
  Indicates the default vertical alignment for a text field.
  `void`
  `setDoneListener(ActionListener l)`
  Sets a Done listener on the TextField - notice this listener will be called only on supported platforms that supports done action on the keyboard
  `void`
  `setEditable(boolean b)`
  Sets this text area to be editable or readonly
  `void`
  `setEndsWith3Points(boolean endsWith3Points)`
  If the TextArea text is too long to fit the text to the widget this will add "..." at the last displayable row.
  `void`
  `setGrowByContent(boolean growByContent)`
  Indicates that the text area should "grow" in height based on the content beyond the limits indicate by the rows variable
  `void`
  `setGrowLimit(int growLimit)`
  Indicates the maximum number of rows in a text area after it has grown, -1 indicates no limit
  `void`
  `setHint(String hint)`
  Sets the TextArea hint text, the hint text is displayed on the TextArea When there is no text in the TextArea
  `void`
  `setHint(String hint, Image icon)`
  Sets the TextArea hint text and Icon, the hint text and icon are displayed on the TextArea when there is no text in the TextArea
  `void`
  `setHintIcon(Image icon)`
  Sets the TextArea hint icon, the hint is displayed on the TextArea When there is no text in the TextArea
  `void`
  `setLinesToScroll(int linesToScroll)`
  Indicates the number of lines to scroll with every scroll operation
  `void`
  `setMaxSize(int maxSize)`
  Sets the maximum size of the text area
  `void`
  `setRows(int rows)`
  Sets the number of rows in the text area
  `void`
  `setRowsGap(int rowsGap)`
  The gap in pixels between rows
  `void`
  `setSingleLineTextArea(boolean singleLineTextArea)`
  Indicates whether this is a single line text area, in which case "growing" won't work as expected.
  `void`
  `setText(String t)`
  Sets the text within this text area
  `void`
  `setTextSelectionEnabled(boolean enabled)`
  Enables text selection on this TextArea.
  `void`
  `setUnsupportedChars(String unsupportedChars)`
  Unsupported characters is a string that contains characters that cause issues when rendering on some problematic fonts.
  `static void`
  `setUseStringWidth(boolean aUseStringWidth)`
  By default text area uses charWidth since its much faster on some devices than string width.
  `void`
  `setVerticalAlignment(int valign)`
  Sets the vertical alignment of the text field to one of: CENTER, TOP, BOTTOM
  `static void`
  `setWidestChar(char widestC)`
  Indicates the widest character in the alphabet, this is useful for detecting linebreaks internally.
  `void`
  `setWidth(int width)`
  Sets the Component width, this method is exposed for the purpose of external layout managers and should not be invoked directly.
  `protected boolean`
  `shouldRenderComponentSelection()`
  Special case for text components, if they are editing they should always render the selected state A component can indicate whether it is interested in rendering it's selection explicitly, this defaults to true in non-touch UI's and false in touch UI's except for the case where a user clicks the screen.
  `void`
  `startEditing()`
  Launches the text field editing, notice that calling this in a callSerially is generally considered good practice
  `void`
  `startEditingAsync()`
  Launches the text field editing in a callserially call
  `void`
  `stopEditing()`
  Stops text editing of this field if it is being edited
  `void`
  `stopEditing(Runnable onFinish)`
  Stops text editing of this field if it is being edited
  `void`
  `unbindProperty(String prop, BindTarget target)`
  Removes a bind target from the given property name

  ### Methods inherited from class Component

  `addDragFinishedListener, addDragOverListener, addDropListener, addFocusListener, addLongPressListener, addPointerDraggedListener, addPointerPressedListener, addPointerReleasedListener, addPullToRefresh, addScrollListener, addStateChangeListener, animate, announceForAccessibility, blocksSideSwipe, cancelRepaints, clearClientProperties, contains, containsOrOwns, createStyleAnimation, deinitializeCustomStyle, dragEnter, dragExit, dragFinished, draggingOver, dragInitiated, drawDraggedImage, drop, focusGained, focusLost, getAbsoluteX, getAbsoluteY, getAccessibilityText, getAllStyles, getAnimationManager, getBaseline, getBaselineResizeBehavior, getBorder, 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, getNativeOverlay, getNextFocusDown, getNextFocusLeft, getNextFocusRight, getNextFocusUp, getOuterHeight, getOuterPreferredH, getOuterPreferredW, getOuterWidth, getOuterX, getOuterY, getOwner, getParent, getPreferredH, getPreferredSize, getPreferredSizeStr, getPreferredW, getPressedStyle, getPropertyNames, getPropertyTypeNames, getPropertyTypes, getPropertyValue, getSameHeight, getSameWidth, getScrollable, getScrollAnimationSpeed, getScrollDimension, getScrollOpacity, getScrollOpacityChangeSpeed, getScrollX, getScrollY, getSelectCommandText, getSelectedRect, getSelectedStyle, getSideGap, getTabIndex, getTensileLength, getTooltip, getUIID, getUIManager, getUnselectedStyle, getVisibleBounds, getVisibleBounds, getWidth, getX, getY, growShrink, handlesInput, hasFixedPreferredSize, hasFocus, hideNativeOverlay, initCustomStyle, initDisabledStyle, initPressedStyle, initSelectedStyle, initUnselectedStyle, installDefaultPainter, isAlwaysTensile, isBlockLead, isCellRenderer, isChildOf, isDragActivated, isDragAndDropOperation, isDraggable, isDragRegion, isDropTarget, isEnabled, isFlatten, isFocusable, isGrabsPointerEvents, isHidden, isHidden, isHideInLandscape, isHideInPortrait, isIgnorePointerEvents, isInClippingRegion, isInitialized, isOpaque, isOwnedBy, isPinchBlocksDragAndDrop, isRippleEffect, isRTL, isScrollable, isScrollableX, isScrollVisible, isSetCursorSupported, isSmoothScrolling, isSnapToGrid, isStickyDrag, isTactileTouch, isTactileTouch, isTensileDragEnabled, isTraversable, isVisible, keyRepeated, laidOut, longKeyPress, longPointerPress, onScrollX, onScrollY, onSetFocusable, paintBackground, paintBackgrounds, paintBorder, paintBorderBackground, paintComponent, paintComponent, paintIntersectingComponentsAbove, paintLock, paintLockRelease, paintRippleOverlay, paintScrollbars, paintScrollbarX, paintScrollbarY, paintShadows, paramString, parsePreferredSize, pinch, pinch, pinchReleased, pointerDragged, pointerDragged, pointerHoverPressed, pointerPressed, pointerPressed, pointerReleased, putClientProperty, refreshTheme, refreshTheme, refreshTheme, remove, removeDragFinishedListener, removeDragOverListener, removeDropListener, removeFocusListener, removeLongPressListener, removePointerDraggedListener, removePointerPressedListener, removePointerReleasedListener, removeScrollListener, removeStateChangeListener, repaint, repaint, requestFocus, resetFocusable, respondsToPointerEvents, scrollRectToVisible, scrollRectToVisible, 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, setIgnorePointerEvents, setInitialized, setInlineAllStyles, setInlineDisabledStyles, setInlinePressedStyles, setInlineSelectedStyles, setInlineStylesTheme, setInlineUnselectedStyles, setIsScrollVisible, setLabelForComponent, setName, setNextFocusDown, setNextFocusLeft, setNextFocusRight, setNextFocusUp, setOpaque, setOwner, setPinchBlocksDragAndDrop, setPreferredH, setPreferredSize, setPreferredSizeStr, setPreferredTabIndex, setPreferredW, setPressedStyle, setPropertyValue, setRippleEffect, setRTL, setSameHeight, setSameSize, setSameWidth, setScrollAnimationSpeed, setScrollOpacityChangeSpeed, setScrollSize, setScrollVisible, setScrollX, setScrollY, setSelectCommandText, setSelectedStyle, setShouldCalcPreferredSize, setSize, setSmoothScrolling, setSnapToGrid, setTabIndex, setTactileTouch, setTensileDragEnabled, setTensileLength, setTooltip, setTraversable, setUIID, setUIID, setUIIDFinal, setUnselectedStyle, setVisible, setX, setY, shouldBlockSideSwipe, shouldBlockSideSwipeLeft, shouldBlockSideSwipeRight, showNativeOverlay, stripMarginAndPadding, styleChanged, toImage, toString, updateNativeOverlay, visibleBoundsContains`
  Modifier and Type
  Method
  Description
  `void`
  `addDragFinishedListener(ActionListener l)`
  Adds a listener to the dragFinished event
  `void`
  `addDragOverListener(ActionListener l)`
  Broadcasts an event when dragging over a component
  `void`
  `addDropListener(ActionListener l)`
  Binds an action listener to drop events which are invoked when this component is dropped on a target
  `void`
  `addFocusListener(FocusListener l)`
  Registers interest in receiving callbacks for focus gained events, a focus event is invoked when the component accepts the focus.
  `void`
  `addLongPressListener(ActionListener l)`
  Adds a listener to the pointer event
  `void`
  `addPointerDraggedListener(ActionListener l)`
  Adds a listener to the pointer event
  `void`
  `addPointerPressedListener(ActionListener l)`
  Adds a listener to the pointer event
  `void`
  `addPointerReleasedListener(ActionListener l)`
  Adds a listener to the pointer event
  `void`
  `addPullToRefresh(Runnable task)`
  This method adds a refresh task to the Component, the task will be executed if the user has pulled the scroll beyond a certain height.
  `void`
  `addScrollListener(ScrollListener l)`
  Registers interest in receiving callbacks for scroll gained events, a scroll event is invoked when the component is scrolled.
  `void`
  `addStateChangeListener(ActionListener<ComponentStateChangeEvent> l)`
  Adds a listener to be notified when the state of this component is changed to and from initialized.
  `boolean`
  `animate()`
  Allows the animation to reduce "repaint" calls when it returns false.
  `void`
  `announceForAccessibility(String text)`
  Manually announces text to native accessibility services, associating the announcement with this component when possible.
  `final boolean`
  `blocksSideSwipe()`
  A component that might need side swipe such as the slider could block it from being used for some other purpose when on top of said component.
  `protected void`
  `cancelRepaints()`
  remove this component from the painting queue
  `void`
  `clearClientProperties()`
  Clears all client properties from this Component
  `boolean`
  `contains(int x, int y)`
  Returns true if the given absolute coordinate is contained in the Component
  `boolean`
  `containsOrOwns(int x, int y)`
  Checks to see if this component either contains the given point, or if it owns the component that contains the given point.
  `ComponentAnimation`
  `createStyleAnimation(String destUIID, int duration)`
  Creates an animation that will transform the current component to the styling of the destination UIID when completed.
  `protected void`
  `deinitializeCustomStyle(Style s)`
  Allows components to create a style of their own, this method cleans up state for the given style
  `protected void`
  `dragEnter(Component dragged)`
  This callback method indicates that a component drag has just entered this component
  `protected void`
  `dragExit(Component dragged)`
  This callback method provides an indication for a drop target that a drag operation is exiting the bounds of this component and it should clear all relevant state if such state exists.
  `protected void`
  `dragFinished(int x, int y)`
  Callback indicating that the drag has finished either via drop or by releasing the component
  `protected boolean`
  `draggingOver(Component dragged, int x, int y)`
  This method allows a component to indicate if it is a drop target for the given component at the given x/y location (in component coordiate space).
  `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`
  `drawDraggedImage(Graphics g, Image img, int x, int y)`
  Draws the given image at x/y, this method can be overriden to draw additional information such as positive or negative drop indication
  `void`
  `drop(Component dragged, int x, int y)`
  Performs a drop operation of the component at the given X/Y location in coordinate space, this method should be overriden by subclasses to perform all of the logic related to moving a component, by default this method does nothing and so dragging a component and dropping it has no effect
  `protected void`
  `focusGained()`
  Callback allowing a developer to track when the component gains focus
  `protected void`
  `focusLost()`
  Callback allowing a developer to track wheh the component loses focus
  `int`
  `getAbsoluteX()`
  Returns the absolute X location based on the component hierarchy, this method calculates a location on the screen for the component rather than a relative location as returned by getX()
  `int`
  `getAbsoluteY()`
  Returns the absolute Y location based on the component hierarchy, this method calculates a location on the screen for the component rather than a relative location as returned by getX()
  `String`
  `getAccessibilityText()`
  Returns the text that describes this component to assistive technologies.
  `final Style`
  `getAllStyles()`
  Returns a "meta style" that allows setting styles once to all the different Style objects, the getters for this style will be meaningless and will return 0 values.
  `AnimationManager`
  `getAnimationManager()`
  Returns the animation manager of the parent form or null if this component isn't currently associated with a form
  `int`
  `getBaseline(int width, int height)`
  The baseline for the component text according to which it should be aligned with other components for best visual look.
  `int`
  `getBaselineResizeBehavior()`
  Returns a constant indicating how the baseline varies with the size of the component.
  `protected Border`
  `getBorder()`
  Normally returns getStyle().getBorder() but some subclasses might use this to programmatically replace the border in runtime e.g.
  `int`
  `getBottomGap()`
  Returns the gap to be left for the bottom scrollbar on the X axis.
  `protected Rectangle`
  `getBounds()`
  Returns the component bounds which is sometimes more convenient than invoking getX/Y/Width/Height.
  `Rectangle`
  `getBounds(Rectangle rect)`
  Returns the bounds of this component in the provided Rectangle.
  `Object`
  `getClientProperty(String key)`
  Client properties allow the association of meta-data with a component, this is useful for some applications that construct GUI's on the fly and need to track the connection between the UI and the data.
  `String`
  `getCloudBoundProperty()`
  Indicates the property within this component that should be bound to the cloud object
  `String`
  `getCloudDestinationProperty()`
  The destination property of the CloudObject
  `Form`
  `getComponentForm()`
  Returns the Component Form or null if this Component is not added yet to a form
  `Object`
  `getComponentState()`
  Some components may optionally generate a state which can then be restored using setCompnentState().
  `int`
  `getCursor()`
  Gets the custom cursor for this component.
  `static byte`
  `getDefaultDragTransparency()`
  Returns the default translucency used in the `#getDragImage()` method.
  `final Rectangle`
  `getDirtyRegion()`
  gets the Component dirty region, this method is for internal use only and SHOULD NOT be invoked by user code.
  `Style`
  `getDisabledStyle()`
  Returns the Component Style for the disabled state allowing us to manipulate the look of the component when its disabled
  `int`
  `getDraggedx()`
  Gets the current dragged x values when the Component is being dragged
  `int`
  `getDraggedy()`
  Gets the current dragged y values when the Component is being dragged
  `protected Image`
  `getDragImage()`
  This method returns an image representing the dragged component, it can be overriden by subclasses to customize the look of the image, the image will be overlaid on top of the form during a drag and drop operation
  `protected int`
  `getDragRegionStatus(int x, int y)`
  Indicates if the section within the X/Y area is a "drag region" where we expect people to drag or press in which case we can instantly start dragging making perceived performance faster.
  `protected float`
  `getDragSpeed(boolean vertical)`
  This method returns the dragging speed based on the latest dragged events
  `byte`
  `getDragTransparency()`
  Returns the translucency used in the `#getDragImage()` method.
  `Editable`
  `getEditingDelegate()`
  Gets the delegate that handles the editing of this component.
  `protected int`
  `getGridPosX()`
  This method should be implemented correctly by subclasses to make snap to grid functionality work as expected.
  `protected int`
  `getGridPosY()`
  This method should be implemented correctly by subclasses to make snap to grid functionality work as expected.
  `int`
  `getHeight()`
  Returns the component height
  `String`
  `getInlineAllStyles()`
  Gets inline styles that are to be applied to all states of this component.
  `String`
  `getInlineDisabledStyles()`
  Gets inline styles that are to be applied to the disabled state of this component.
  `String`
  `getInlinePressedStyles()`
  Gets inline styles that are to be applied to the pressed state of this component.
  `String`
  `getInlineSelectedStyles()`
  Gets inline styles that are to be applied to the selected state of this component.
  `Resources`
  `getInlineStylesTheme()`
  Gets the theme that is used by inline styles to reference images.
  `String`
  `getInlineUnselectedStyles()`
  Gets inline styles that are to be applied to the unselected state of this component.
  `int`
  `getInnerHeight()`
  Gets the inner height of this component.
  `int`
  `getInnerPreferredH()`
  Gets the preferred height removing vertical padding.
  `int`
  `getInnerPreferredW()`
  Gets the preferred width removing horizontal padding.
  `int`
  `getInnerWidth()`
  Gets the inner width of this component.
  `int`
  `getInnerX()`
  Gets x-coordinate of the inner bounds of this component.
  `int`
  `getInnerY()`
  Gets the inner y-coordinate of the inner bounds of this component.
  `Label`
  `getLabelForComponent()`
  Allows us to indicate the label associated with this component thus providing visual feedback related for this component e.g.
  `String`
  `getName()`
  A component name allows us to easily identify the component within a dynamic UI.
  `Object`
  `getNativeOverlay()`
  Gets the native overlay for this component.
  `Component`
  `getNextFocusDown()`
  Allows us to determine which component will receive focus next when traversing with the down key
  `Component`
  `getNextFocusLeft()`
  Allows us to determine which component will receive focus next when traversing with the left key.
  `Component`
  `getNextFocusRight()`
  Allows us to determine which component will receive focus next when traversing with the right key
  `Component`
  `getNextFocusUp()`
  Allows us to determine which component will receive focus next when traversing with the up key.
  `int`
  `getOuterHeight()`
  Gets the outer height of this component.
  `int`
  `getOuterPreferredH()`
  Gets the preferred height including the vertical margins.
  `int`
  `getOuterPreferredW()`
  Gets the preferred width including horizontal margins.
  `int`
  `getOuterWidth()`
  Gets the outer width of this component.
  `int`
  `getOuterX()`
  Gets the x-coordinate of the outer bounds of this component.
  `int`
  `getOuterY()`
  Gets the Y-coordinate of the outer bounds of this component.
  `Component`
  `getOwner()`
  Gets the "owner" of this component as set by `#setOwner(com.codename1.ui.Component)`.
  `Container`
  `getParent()`
  Returns the container in which this component is contained
  `int`
  `getPreferredH()`
  Helper method to retrieve the preferred height of the component.
  `Dimension`
  `getPreferredSize()`
  Returns the Component Preferred Size, there is no guarantee the Component will be sized at its Preferred Size.
  `String`
  `getPreferredSizeStr()`
  Returns the preferred size string that can be used to specify the preferred size of the component using pixels or millimetres.
  `int`
  `getPreferredW()`
  Helper method to retrieve the preferred width of the component.
  `Style`
  `getPressedStyle()`
  Returns the Component Style for the pressed state allowing us to manipulate the look of the component when it is pressed
  `String[]`
  `getPropertyNames()`
  A component may expose mutable property names for a UI designer to manipulate, this API is designed for usage internally by the GUI builder code
  `String[]`
  `getPropertyTypeNames()`
  This method is here to workaround an XMLVM array type bug where property types aren't identified properly, it returns the names of the types using the following type names: String,int,double,long,byte,short,char,String[],String[][],byte[],Image,Image[],Object[],ListModel,ListCellRenderer
  `Class[]`
  `getPropertyTypes()`
  Matches the property names method (see that method for further details).
  `Object`
  `getPropertyValue(String name)`
  Returns the current value of the property name, this method is used by the GUI builder
  `Component[]`
  `getSameHeight()`
  Returns the array of components that have an equal height
  `Component[]`
  `getSameWidth()`
  Returns the array of components that have an equal width
  `Component`
  `getScrollable()`
  Returns the scrollable parent of this component
  `int`
  `getScrollAnimationSpeed()`
  Scroll animation speed in milliseconds allowing a developer to slow down or accelerate the smooth animation mode
  `Dimension`
  `getScrollDimension()`
  Returns the Components dimension in scrolling, this is very similar to the preferred size aspect only it represents actual scrolling limits.
  `int`
  `getScrollOpacity()`
  This method is used internally by the look and feel to implement the fading scrollbar behavior.
  `int`
  `getScrollOpacityChangeSpeed()`
  Indicates the decrement units for the scroll opacity
  `int`
  `getScrollX()`
  Indicates the X position of the scrolling, this number is relative to the component position and so a position of 0 would indicate the x position of the component.
  `int`
  `getScrollY()`
  Indicates the Y position of the scrolling, this number is relative to the component position and so a position of 0 would indicate the y position of the component.
  `String`
  `getSelectCommandText()`
  Allows determining the text for the select command used in the 3rd softbutton mode.
  `Rectangle`
  `getSelectedRect()`
  Returns the component bounds with absolute screen coordinates, for components that include an internal selection behavior and are not containers (currently only List) this method allows returning the position of the selection itself which is useful for things such as the popup dialog and similar UI's that need to reference the position of the selection externally
  `Style`
  `getSelectedStyle()`
  Returns the Component Style for the selected state allowing us to manipulate the look of the component when it owns focus
  `int`
  `getSideGap()`
  Returns the gap to be left for the side scrollbar on the Y axis.
  `int`
  `getTabIndex()`
  Gets the tab index of the component.
  `int`
  `getTensileLength()`
  Recommended length for the tensile, -1 for default
  `String`
  `getTooltip()`

  ###### Returns

  `final String`
  `getUIID()`
  Unique identifier for a component.
  `UIManager`
  `getUIManager()`
  This method should be used by the Component to retrieve the correct UIManager to work with
  `final Style`
  `getUnselectedStyle()`
  Returns the Component Style for the unselected mode allowing us to manipulate the look of the component
  `protected Rectangle`
  `getVisibleBounds()`
  Returns the component bounds for scrolling which might differ from the getBounds for large components e.g.
  `Rectangle`
  `getVisibleBounds(Rectangle rect)`
  Returns the component bounds for scrolling which might differ from the getBounds for large components into the provided rectangle.
  `int`
  `getWidth()`
  Returns the component width
  `int`
  `getX()`
  Returns the current component x location relatively to its parent container
  `int`
  `getY()`
  Returns the component y location relatively to its parent container
  `void`
  `growShrink(int duration)`
  Grows or shrinks this component to its new preferred size, this method essentially takes a component whose preferred size has changed and creates a "growing" effect that lasts for the duration.
  `boolean`
  `handlesInput()`
  Prevents key events from being grabbed for focus traversal.
  `boolean`
  `hasFixedPreferredSize()`
  Checks if this component has a fixed preferred size either via an explicit call to `#setPreferredH(int)` and `#setPreferredW(int)`, or via a preferred size style string.
  `boolean`
  `hasFocus()`
  Returns true if the component has focus
  `protected void`
  `hideNativeOverlay()`
  Hides the native overlay for this component.
  `protected void`
  `initCustomStyle(Style s)`
  Allows components to create a style of their own, this method binds the listener to the style and installs a bg painter
  `protected void`
  `initDisabledStyle(Style disabledStyle)`
  Can be overridden by subclasses to perform initialization when the disabled style is set to a new value.
  `protected void`
  `initPressedStyle(Style pressedStyle)`
  Can be overridden by subclasses to perform initialization when the pressed style is set to a new value.
  `protected void`
  `initSelectedStyle(Style selectedStyle)`
  Can be overridden by subclasses to perform initialization when the selected style is set to a new value.
  `protected void`
  `initUnselectedStyle(Style unselectedStyle)`
  Can be overridden by subclasses to perform initialization when the unselected style is set to a new value.
  `protected void`
  `installDefaultPainter(Style s)`
  Allows subclasses to create their own custom style types and install the background painter into them
  `boolean`
  `isAlwaysTensile()`
  Enable the tensile drag to work even when a component doesn't have a scroll showable (scrollable flag still needs to be set to true)
  `boolean`
  `isBlockLead()`
  Prevent a lead component hierarchy from this specific component, this allows a component within that hierarchy to still act as a standalone component
  `boolean`
  `isCellRenderer()`
  Used as an optimization to mark that this component is currently being used as a cell renderer
  `boolean`
  `isChildOf(Container cnt)`
  Searches the hierarchy of the component recursively to see if the given Container is one of the parents of this component
  `protected boolean`
  `isDragActivated()`
  Indicates whether we are in the middle of a drag operation, this method allows developers overriding the pointer released events to know when this is a drag operation.
  `protected boolean`
  `isDragAndDropOperation(int x, int y)`
  This method allows a developer to define only a specific portion of a component as draggable by default it returns true if the component is defined as "draggable"
  `boolean`
  `isDraggable()`
  Indicates whether this component can be dragged in a drag and drop operation rather than scroll the parent
  `protected boolean`
  `isDragRegion(int x, int y)`
  Indicates if the section within the X/Y area is a "drag region" where we expect people to drag and never actually "press" in which case we can instantly start dragging making perceived performance faster.
  `boolean`
  `isDropTarget()`
  Indicates whether this component can receive dropped components into it, notice that when dropping on a component or container the parents will be checked recursively to find a valid drop target
  `boolean`
  `isEnabled()`
  Indicates whether component is enabled or disabled thus allowing us to prevent a component from receiving input events and indicate so visually
  `boolean`
  `isFlatten()`
  Makes the component effectively opaque by blending the backgrounds into an image in memory so the layer of underlying components is only drawn once when this component is repainted.
  `boolean`
  `isFocusable()`
  Returns true if this component can receive focus and is enabled
  `boolean`
  `isGrabsPointerEvents()`
  This property is useful for blocking in z-order touch events, sometimes we might want to grab touch events in a specific component without making it focusable.
  `boolean`
  `isHidden()`
  Returns true if the component was explicitly hidden by the user.
  `boolean`
  `isHidden(boolean checkParent)`
  Checks if the component is hidden.
  `boolean`
  `isHideInLandscape()`
  Indicates that this component and all its children should be hidden when the device is switched to landscape mode
  `boolean`
  `isHideInPortrait()`
  Indicates that this component and all its children should be hidden when the device is switched to portrait mode
  `boolean`
  `isIgnorePointerEvents()`

  ###### Returns

  `protected boolean`
  `isInClippingRegion(Graphics g)`
  `protected boolean`
  `isInitialized()`
  Indicates if the component is in the initialized state, a component is initialized when its initComponent() method was invoked.
  `boolean`
  `isOpaque()`
  Checks whether the component's background should be painted.
  `boolean`
  `isOwnedBy(Component cmp)`
  Checks to see if this component is owned by the given other component.
  `boolean`
  `isPinchBlocksDragAndDrop()`
  returns true if pinch will block drag and drop
  `boolean`
  `isRippleEffect()`
  Indicates whether the component displays the material design ripple effect
  `final boolean`
  `isRTL()`
  Is the component a bidi RTL component
  `protected boolean`
  `isScrollable()`
  Indicates whether the component should/could scroll by default a component is not scrollable.
  `boolean`
  `isScrollableX()`
  Indicates whether the component should/could scroll on the X axis
  `boolean`
  `isScrollVisible()`
  Indicate whether this component scroll is visible
  `static boolean`
  `isSetCursorSupported()`
  Checks to see if this platform supports cursors.
  `boolean`
  `isSmoothScrolling()`
  Indicates that scrolling through the component should work as an animation
  `boolean`
  `isSnapToGrid()`
  Indicates whether scrolling this component should jump to a specific location in a grid
  `protected boolean`
  `isStickyDrag()`
  Returns true if the component is interested in receiving drag/pointer release events even after the gesture exceeded its boundaries.
  `boolean`
  `isTactileTouch()`
  Indicates whether the component should "trigger" tactile touch when pressed by the user in a touch screen UI.
  `protected boolean`
  `isTactileTouch(int x, int y)`
  Elaborate components might not provide tactile feedback for all their areas (e.g. Lists) this method defaults to returning the value of isTactileTouch
  `boolean`
  `isTensileDragEnabled()`
  Indicates whether tensile drag (dragging beyond the boundry of the component and snapping back) is enabled for this component.
  `final boolean`
  `isTraversable()`
  Checks if this component should be traversable using the keyboard using tab, next, previous keys.
  `boolean`
  `isVisible()`
  Returns whether the component is visible or not
  `void`
  `keyRepeated(int keyCode)`
  If this Component is focused, the key repeat event will call this method.
  `protected void`
  `laidOut()`
  This is a callback method to inform the Component when it's been laidout on the parent Container
  `protected void`
  `longKeyPress(int keyCode)`
  If this Component is focused this method is invoked when the user presses and holds the key
  `void`
  `longPointerPress(int x, int y)`
  If this Component is focused this method is invoked when the user presses and holds the pointer on the Component
  `protected void`
  `onScrollX(int scrollX)`
  This method can be overriden to receive scroll events, unlike overriding setScrollX it will receive all calls for scrolling.
  `protected void`
  `onScrollY(int scrollY)`
  This method can be overriden to receive scroll events, unlike overriding setScrollY it will receive all calls for scrolling.
  `protected void`
  `onSetFocusable(boolean focusable)`
  Since setFocusable is final this callback is invoked when focusable changes.
  `protected void`
  `paintBackground(Graphics g)`
  This method paints the Component background, it should be overriden by subclasses to perform custom background drawing.
  `void`
  `paintBackgrounds(Graphics g)`
  This method paints all the parents Components Background.
  `protected void`
  `paintBorder(Graphics g)`
  Draws the component border if such a border exists.
  `protected void`
  `paintBorderBackground(Graphics g)`
  Draws the component border background if such a border exists.
  `final void`
  `paintComponent(Graphics g)`
  Paints this component as a root by going to all the parent components and setting the absolute translation based on coordinates and scroll status.
  `final void`
  `paintComponent(Graphics g, boolean background)`
  Paints this component as a root by going to all the parent components and setting the absolute translation based on coordinates and scroll status.
  `void`
  `paintIntersectingComponentsAbove(Graphics g)`
  Paints intersecting components that appear above this component.
  `Image`
  `paintLock(boolean hardLock)`
  This method locks the component so it will always paint the given image instead of running through its paint logic.
  `void`
  `paintLockRelease()`
  Releases the paint lock image to allow paint to work as usual, see paintLock(boolean) for details
  `void`
  `paintRippleOverlay(Graphics g, int x, int y, int position)`
  Invoked to draw the ripple effect overlay in Android where the finger of the user causes a growing circular overlay over time.
  `protected void`
  `paintScrollbars(Graphics g)`
  Paints the UI for the scrollbars on the component, this will be invoked only for scrollable components.
  `protected void`
  `paintScrollbarX(Graphics g)`
  Paints the UI for the scrollbar on the X axis, this method allows component subclasses to customize the look of a scrollbar
  `protected void`
  `paintScrollbarY(Graphics g)`
  Paints the UI for the scrollbar on the Y axis, this method allows component subclasses to customize the look of a scrollbar
  `void`
  `paintShadows(Graphics g, int relativeX, int relativeY)`
  Paints the drop-shadow projections for this component based on its elevation value.
  `protected String`
  `paramString()`
  Returns a string representing the state of this component.
  `static Dimension`
  `parsePreferredSize(String preferredSize, Dimension baseSize)`
  Parses the preferred size given as a string
  `protected boolean`
  `pinch(float scale)`
  Invoked by subclasses interested in handling pinch to zoom events, if true is returned other drag events will not be broadcast
  `protected boolean`
  `pinch(int[] x, int[] y)`
  Invoked by subclasses interested in handling pinch to do their own actions based on the position of the two fingers, if true is returned other drag events will not be broadcast
  `protected void`
  `pinchReleased(int x, int y)`
  To be implemented by subclasses interested in being notified when a pinch zoom has ended (i.e the user has removed one of their fingers, but is still dragging).
  `void`
  `pointerDragged(int[] x, int[] y)`
  If this Component is focused, the pointer dragged event will call this method
  `void`
  `pointerDragged(int x, int y)`
  If this Component is focused, the pointer dragged event will call this method
  `void`
  `pointerHoverPressed(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`
  `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`
  `putClientProperty(String key, Object value)`
  Client properties allow the association of meta-data with a component, this is useful for some applications that construct GUI's on the fly and need to track the connection between the UI and the data.
  `void`
  `refreshTheme()`
  Makes sure the component is up to date with the current theme, ONLY INVOKE THIS METHOD IF YOU CHANGED THE THEME!
  `void`
  `refreshTheme(boolean merge)`
  Makes sure the component is up to date with the current theme, ONLY INVOKE THIS METHOD IF YOU CHANGED THE THEME!
  `protected void`
  `refreshTheme(String id, boolean merge)`
  Makes sure the component is up to date with the given UIID
  `void`
  `remove()`
  This method will remove the Component from its parent.
  `void`
  `removeDragFinishedListener(ActionListener l)`
  Removes the listener from the drag finished event
  `void`
  `removeDragOverListener(ActionListener l)`
  Removes an action listener to drag over events
  `void`
  `removeDropListener(ActionListener l)`
  Removes an action listener to drop events which are invoked when this component is dropped on a target
  `void`
  `removeFocusListener(FocusListener l)`
  Deregisters interest in receiving callbacks for focus gained events
  `void`
  `removeLongPressListener(ActionListener l)`
  Removes the listener from the pointer event
  `void`
  `removePointerDraggedListener(ActionListener l)`
  Removes the listener from the pointer event
  `void`
  `removePointerPressedListener(ActionListener l)`
  Removes the listener from the pointer event
  `void`
  `removePointerReleasedListener(ActionListener l)`
  Removes the listener from the pointer event
  `void`
  `removeScrollListener(ScrollListener l)`
  Deregisters interest in receiving callbacks for scroll gained events
  `void`
  `removeStateChangeListener(ActionListener<ComponentStateChangeEvent> l)`
  Removes a listener from being notified when the state of this component is changed to and from initialized.
  `void`
  `repaint()`
  Repaint this Component, the repaint call causes a callback of the paint method on the event dispatch thread.
  `void`
  `repaint(int x, int y, int w, int h)`
  Repaints a specific region within the component
  `void`
  `requestFocus()`
  Changes the current component to the focused component, will work only for a component that belongs to a parent form.
  `protected void`
  `resetFocusable()`
  Restores the state of the focusable flag to its default state
  `boolean`
  `respondsToPointerEvents()`
  Checks if the component responds to pointer events.
  `void`
  `scrollRectToVisible(int x, int y, int width, int height, Component coordinateSpace)`
  Makes sure the component is visible in the scroll if this container is scrollable
  `protected void`
  `scrollRectToVisible(Rectangle rect, Component coordinateSpace)`
  Makes sure the component is visible in the scroll if this container is scrollable
  `void`
  `setAccessibilityText(String text)`
  Sets the text that describes this component to assistive technologies.
  `void`
  `setAlwaysTensile(boolean alwaysTensile)`
  Enable the tensile drag to work even when a component doesn't have a scroll showable (scrollable flag still needs to be set to true)
  `void`
  `setBlockLead(boolean blockLead)`
  Prevent a lead component hierarchy from this specific component, this allows a component within that hierarchy to still act as a standalone component
  `void`
  `setCellRenderer(boolean cellRenderer)`
  Used as an optimization to mark that this component is currently being used as a cell renderer
  `void`
  `setCloudBoundProperty(String cloudBoundProperty)`
  Indicates the property within this component that should be bound to the cloud object
  `void`
  `setCloudDestinationProperty(String cloudDestinationProperty)`
  The destination property of the CloudObject
  `void`
  `setComponentState(Object state)`
  If getComponentState returned a value the setter can update the value and restore the prior state.
  `void`
  `setCursor(int cursor)`
  Sets a custom mouse cursor for this component if the platform supports mouse cursors, notice that this isn't applicable for touch devices.
  `static void`
  `setDefaultDragTransparency(byte defaultDragTransparency)`
  Sets the default translucency of the `#getDragImage()` method.
  `final void`
  `setDirtyRegion(Rectangle dirty)`
  sets the Component dirty region, this method is for internal use only and SHOULD NOT be invoked by user code.
  `void`
  `setDisabledStyle(Style style)`
  Changes the Component disalbed Style by replacing the Component Style with the given Style
  `void`
  `setDraggable(boolean draggable)`
  Indicates whether this component can be dragged in a drag and drop operation rather than scroll the parent
  `void`
  `setDragTransparency(byte dragTransparency)`
  Sets the translucency of the `#getDragImage()` method.
  `void`
  `setDropTarget(boolean dropTarget)`
  Indicates whether this component can receive dropped components into it, notice that when dropping on a component or container the parents will be checked recursively to find a valid drop target
  `void`
  `setEditingDelegate(Editable editable)`
  Sets the editing delegate for this component.
  `void`
  `setEnabled(boolean enabled)`
  Indicates whether component is enabled or disabled thus allowing us to prevent a component from receiving input events and indicate so visually
  `void`
  `setFlatten(boolean flatten)`
  Makes the component effectively opaque by blending the backgrounds into an image in memory so the layer of underlying components is only drawn once when this component is repainted.
  `void`
  `setFocus(boolean focused)`
  This flag doesn't really give focus, its a state that determines what colors from the Style should be used when painting the component.
  `final void`
  `setFocusable(boolean focusable)`
  A simple setter to determine if this Component can get focused
  `void`
  `setGrabsPointerEvents(boolean grabsPointerEvents)`
  This property is useful for blocking in z-order touch events, sometimes we might want to grab touch events in a specific component without making it focusable.
  `void`
  `setHandlesInput(boolean handlesInput)`
  Prevents key events from being grabbed for focus traversal.
  `void`
  `setHeight(int height)`
  Sets the Component height, this method is exposed for the purpose of external layout managers and should not be invoked directly.
  `void`
  `setHidden(boolean b)`
  Makes the components preferred size equal 0 when hidden and restores it to the default size when not.
  `void`
  `setHidden(boolean b, boolean changeMargin)`
  Makes the components preferred size equal 0 when hidden and restores it to the default size when not.
  `void`
  `setHideInLandscape(boolean hideInLandscape)`
  Indicates that this component and all its children should be hidden when the device is switched to landscape mode
  `void`
  `setHideInPortrait(boolean hideInPortrait)`
  Indicates that this component and all its children should be hidden when the device is switched to portrait mode
  `void`
  `setIgnorePointerEvents(boolean ignorePointerEvents)`

  ###### Parameters

  `protected void`
  `setInitialized(boolean initialized)`
  Indicates if the component is in the initialized state, a component is initialized when its initComponent() method was invoked.
  `void`
  `setInlineAllStyles(String styles)`
  Registers inline styles that should be applied to all states of the component.
  `void`
  `setInlineDisabledStyles(String styles)`
  Registers inline styles that should be applied to the disabled state of the component.
  `void`
  `setInlinePressedStyles(String styles)`
  Registers inline styles that should be applied to the pressed state of the component.
  `void`
  `setInlineSelectedStyles(String styles)`
  Registers inline styles that should be applied to the selected state of the component.
  `void`
  `setInlineStylesTheme(Resources inlineStylesTheme)`
  Sets the theme that is used by inline styles to reference images.
  `void`
  `setInlineUnselectedStyles(String styles)`
  Registers inline styles that should be applied to the unselected state of the component.
  `void`
  `setIsScrollVisible(boolean isScrollVisible)`
  Set whether this component scroll is visible
  `void`
  `setLabelForComponent(Label componentLabel)`
  Allows us to indicate the label associated with this component thus providing visual feedback related for this component e.g.
  `void`
  `setName(String name)`
  A component name allows us to easily identify the component within a dynamic UI.
  `void`
  `setNextFocusDown(Component nextFocusDown)`
  Allows us to determine which component will receive focus next when traversing with the down key
  `void`
  `setNextFocusLeft(Component nextFocusLeft)`
  Allows us to determine which component will receive focus next when traversing with the left key, this method doesn't affect the general focus behavior.
  `void`
  `setNextFocusRight(Component nextFocusRight)`
  Allows us to determine which component will receive focus next when traversing with the right key
  `void`
  `setNextFocusUp(Component nextFocusUp)`
  Allows us to determine which component will receive focus next when traversing with the up key, this method doesn't affect the general focus behavior.
  `final void`
  `setOpaque(boolean opaque)`
  Sets whether or not to paint the component background.
  `void`
  `setOwner(Component owner)`
  Sets the owner of this component to the specified component.
  `void`
  `setPinchBlocksDragAndDrop(boolean block)`
  If a component supports pinch as well as drag and drop the two may conflict (if one finger is placed a bit before the other, the drag timer will be initiated and may trigger drag even if the second finger has been placed before).
  `void`
  `setPreferredH(int preferredH)`
  Helper method to set the preferred height of the component.
  `void`
  `setPreferredSize(Dimension d)`
  Sets the Component Preferred Size, there is no guarantee the Component will be sized at its Preferred Size.
  `void`
  `setPreferredSizeStr(String value)`

  ###### Parameters

  `void`
  `setPreferredTabIndex(int index)`
  Sets the preferred tab index of the component.
  `void`
  `setPreferredW(int preferredW)`
  Helper method to set the preferred width of the component.
  `void`
  `setPressedStyle(Style style)`
  Sets the Component Style for the pressed state allowing us to manipulate the look of the component when it is pressed
  `String`
  `setPropertyValue(String name, Object value)`
  Sets a new value to the given property, returns an error message if failed and null if successful.
  `void`
  `setRippleEffect(boolean rippleEffect)`
  Indicates whether the component displays the material design ripple effect
  `void`
  `setRTL(boolean rtl)`
  Is the component a bidi RTL component
  `static void`
  `setSameHeight(Component... c)`
  Places all of these components in the same height group, to remove a component from the group invoke this method with that component only.
  `static void`
  `setSameSize(Component... c)`
  This is identical to invoking `#sameWidth` followed by `#sameHeight`
  `static void`
  `setSameWidth(Component... c)`
  Places all of these components in the same width group, to remove a component from the group invoke this method with that component only.
  `void`
  `setScrollAnimationSpeed(int animationSpeed)`
  Scroll animation speed in milliseconds allowing a developer to slow down or accelerate the smooth animation mode
  `void`
  `setScrollOpacityChangeSpeed(int scrollOpacityChangeSpeed)`
  Indicates the decrement units for the scroll opacity
  `void`
  `setScrollSize(Dimension d)`
  Set the size for the scroll area
  `void`
  `setScrollVisible(boolean isScrollVisible)`
  Set whether this component scroll is visible
  `protected void`
  `setScrollX(int scrollX)`
  Indicates the X position of the scrolling, this number is relative to the component position and so a position of 0 would indicate the x position of the component.
  `protected void`
  `setScrollY(int scrollY)`
  Indicates the Y position of the scrolling, this number is relative to the component position and so a position of 0 would indicate the y position of the component.
  `void`
  `setSelectCommandText(String selectText)`
  Allows determining the text for the select command used in the 3rd softbutton mode.
  `void`
  `setSelectedStyle(Style style)`
  Changes the Component selected Style by replacing the Component Style with the given Style
  `void`
  `setShouldCalcPreferredSize(boolean shouldCalcPreferredSize)`
  Indicates the values within the component have changed and preferred size should be recalculated
  `void`
  `setSize(Dimension d)`
  Sets the Component size, this method is exposed for the purpose of external layout managers and should not be invoked directly.
  `void`
  `setSmoothScrolling(boolean smoothScrolling)`
  Indicates that scrolling through the component should work as an animation
  `void`
  `setSnapToGrid(boolean snapToGrid)`
  Indicates whether scrolling this component should jump to a specific location in a grid
  `void`
  `setTabIndex(int index)`
  Sets the tab index of the component.
  `void`
  `setTactileTouch(boolean tactileTouch)`
  Indicates whether the component should "trigger" tactile touch when pressed by the user in a touch screen UI.
  `void`
  `setTensileDragEnabled(boolean tensileDragEnabled)`
  Indicates whether tensile drag (dragging beyond the boundry of the component and snapping back) is enabled for this component.
  `void`
  `setTensileLength(int tensileLength)`
  Recommended length for the tensile, -1 for default
  `void`
  `setTooltip(String tooltip)`

  ###### Parameters

  `final void`
  `setTraversable(boolean traversable)`
  Sets whether this component is traversable using the keyboard using tab, next, previous keys.
  `void`
  `setUIID(String id)`
  This method sets the Component the Unique identifier.
  `void`
  `setUIID(String portraitUiid, String landscapeUiid)`
  This method sets the Component the Unique identifier.
  `protected final void`
  `setUIIDFinal(String id)`
  This method is the implementation of setUIID and is defined as final to allow invocation from constructors.
  `void`
  `setUnselectedStyle(Style style)`
  Changes the Component Style by replacing the Component Style with the given Style
  `void`
  `setVisible(boolean visible)`
  Toggles visibility of the component
  `void`
  `setX(int x)`
  Sets the Component x location relative to the parent container, this method is exposed for the purpose of external layout managers and should not be invoked directly.
  `void`
  `setY(int y)`
  Sets the Component y location relative to the parent container, this method is exposed for the purpose of external layout managers and should not be invoked directly.
  `protected boolean`
  `shouldBlockSideSwipe()`
  A component that might need side swipe such as the slider could block it from being used for some other purpose when on top of said component.
  `protected boolean`
  `shouldBlockSideSwipeLeft()`
  A component that might need side swipe such as the tabs could block it from being used for some other purpose when on top of said component.
  `protected boolean`
  `shouldBlockSideSwipeRight()`
  A component that might need side swipe such as the tabs could block it from being used for some other purpose when on top of said component.
  `protected void`
  `showNativeOverlay()`
  Creates the native overlay for this component.
  `Component`
  `stripMarginAndPadding()`
  Convenience method that strips margin and padding from the component, and returns itself for chaining.
  `void`
  `styleChanged(String propertyName, Style source)`
  Invoked to indicate a change in a propertyName of a Style
  `Image`
  `toImage()`
  Returns the component as an image.
  `String`
  `toString()`
  Overriden to return a useful value for debugging purposes
  `protected void`
  `updateNativeOverlay()`
  Updates the native overlay for this component.
  `boolean`
  `visibleBoundsContains(int x, int y)`
  Returns true if the given absolute coordinate is contained inside the visible bounds of the component.

  ### Methods inherited from class Object

  `clone, equals, getClass, hashCode, notify, notifyAll, wait, wait, wait`
  Modifier and Type
  Method
  Description
  `protected Object`
  `clone()`
  `boolean`
  `equals(Object obj)`
  Indicates whether some other object is "equal to" this one.
  `final Class`
  `getClass()`
  Returns the runtime class of an object.
  `int`
  `hashCode()`
  Returns a hash code value for the object.
  `final void`
  `notify()`
  Wakes up a single thread that is waiting on this object's monitor.
  `final void`
  `notifyAll()`
  Wakes up all threads that are waiting on this object's monitor.
  `final void`
  `wait()`
  Causes current thread to wait until another thread invokes the method or the method for this object.
  `final void`
  `wait(long timeout)`
  Causes current thread to wait until either another thread invokes the method or the method for this object, or a specified amount of time has elapsed.
  `final void`
  `wait(long timeout, int nanos)`
  Causes current thread to wait until another thread invokes the method or the method for this object, or some other thread interrupts the current thread, or a certain amount of real time has elapsed.

- ## Field Details

  - ### ANY

    public static final int ANY
    Allows any type of input into a text field, if a constraint is not supported by an underlying implementation this will be the default.
    See Also:
      - Constant Field Values

  - ### EMAILADDR

    public static final int EMAILADDR
    The user is allowed to enter an e-mail address.
    See Also:
      - Constant Field Values

  - ### NUMERIC

    public static final int NUMERIC
    The user is allowed to enter only an integer value.
    See Also:
      - Constant Field Values

  - ### PHONENUMBER

    public static final int PHONENUMBER
    The user is allowed to enter a phone number.
    See Also:
      - Constant Field Values

  - ### URL

    public static final int URL
    The user is allowed to enter a URL.
    See Also:
      - Constant Field Values

  - ### DECIMAL

    public static final int DECIMAL
    The user is allowed to enter numeric values with optional decimal fractions, for example "-123", "0.123", or ".5".
    See Also:
      - Constant Field Values

  - ### PASSWORD

    public static final int PASSWORD
    Indicates that the text entered is confidential data that should be obscured whenever possible.
    See Also:
      - Constant Field Values

  - ### UNEDITABLE

    public static final int UNEDITABLE
    Indicates that editing is currently disallowed.
    See Also:
      - Constant Field Values

  - ### SENSITIVE

    public static final int SENSITIVE
    Indicates that the text entered is sensitive data that the implementation must never store into a dictionary or table for use in predictive, auto-completing, or other accelerated input schemes.
    See Also:
      - Constant Field Values

  - ### NON_PREDICTIVE

    public static final int NON_PREDICTIVE
    Indicates that the text entered does not consist of words that are likely to be found in dictionaries typically used by predictive input schemes.
    See Also:
      - Constant Field Values

  - ### INITIAL_CAPS_WORD

    public static final int INITIAL_CAPS_WORD
    This flag is a hint to the implementation that during text editing, the initial letter of each word should be capitalized.
    See Also:
      - Constant Field Values

  - ### INITIAL_CAPS_SENTENCE

    public static final int INITIAL_CAPS_SENTENCE
    This flag is a hint to the implementation that during text editing, the initial letter of each sentence should be capitalized.
    See Also:
      - Constant Field Values

  - ### USERNAME

    public static final int USERNAME
    This flag is a hint to the implementation that this field contains a username.
    See Also:
      - Constant Field Values

  - ### UPPERCASE

    public static final int UPPERCASE
    This flag is a hint to the implementation that the text in this field should be upper case
    See Also:
      - Constant Field Values

- ## Constructor Details

  - ### TextArea

    public TextArea(int rows, int columns)

    Creates an area with the given rows and columns

    ###### Parameters

    - `rows`: the number of rows

    - `columns`: - the number of columns

    ###### Throws

    - `IllegalArgumentException`: if rows <= 0 or columns <= 1

  - ### TextArea

    public TextArea(int rows, int columns, int constraint)

    Creates an area with the given rows, columns and constraint

    ###### Parameters

    - `rows`: the number of rows

    - `columns`: - the number of columns

    - `constraint`: @param constraint one of ANY, EMAILADDR, NUMERIC, PHONENUMBER, URL, DECIMAL it can be bitwised or'd with one of PASSWORD, UNEDITABLE, SENSITIVE, NON_PREDICTIVE, INITIAL_CAPS_SENTENCE, INITIAL_CAPS_WORD. E.g. ANY | PASSWORD.

    ###### Throws

    - `IllegalArgumentException`: if rows <= 0 or columns <= 1

  - ### TextArea

    public TextArea(String text, int rows, int columns)

    Creates an area with the given text, rows and columns

    ###### Parameters

    - `text`: @param text the text to be displayed; if text is null, the empty string "" will be displayed

    - `rows`: the number of rows

    - `columns`: - the number of columns

    ###### Throws

    - `IllegalArgumentException`: if rows <= 0 or columns <= 1

  - ### TextArea

    public TextArea(String text, int rows, int columns, int constraint)

    Creates an area with the given text, rows, columns and constraint

    ###### Parameters

    - `text`: @param text the text to be displayed; if text is null, the empty string "" will be displayed

    - `rows`: the number of rows

    - `columns`: - the number of columns

    - `constraint`: @param constraint one of ANY, EMAILADDR, NUMERIC, PHONENUMBER, URL, DECIMAL it can be bitwised or'd with one of PASSWORD, UNEDITABLE, SENSITIVE, NON_PREDICTIVE, INITIAL_CAPS_SENTENCE, INITIAL_CAPS_WORD. E.g. ANY | PASSWORD.

    ###### Throws

    - `IllegalArgumentException`: if rows <= 0 or columns <= 1

  - ### TextArea

    public TextArea(String text, int maxSize)

    Creates an area with the given text and maximum size, this constructor will create a single line text area similar to a text field!

    ###### Parameters

    - `text`: @param text the text to be displayed; if text is null, the empty string "" will be displayed

    - `maxSize`: text area maximum size

  - ### TextArea

    public TextArea(String text)

    Creates an area with the given text, this constructor will create a single line text area similar to a text field!

    ###### Parameters

    - `text`: @param text the text to be displayed; if text is null, the empty string "" will be displayed

  - ### TextArea

    public TextArea()
    Creates an empty text area, this constructor will create a single line text area similar to a text field!

- ## Method Details

  - ### getDefaultValign

    public static int getDefaultValign()

    Indicates the default vertical alignment for a text field.

    ###### Returns

    the defaultValign

  - ### setDefaultValign

    public static void setDefaultValign(int aDefaultValign)

    Indicates the default vertical alignment for a text field.

    ###### Parameters

    - `aDefaultValign`: the defaultValign to set

  - ### setDefaultMaxSize

    public static void setDefaultMaxSize(int value)

    Sets the default limit for the native text box size

    ###### Parameters

    - `value`: default value for the size of the native text box

  - ### isAutoDegradeMaxSize

    public static boolean isAutoDegradeMaxSize()

    Indicates whether a high value for default maxSize will be reduced to a lower value if the underlying platform throws an exception.

    ###### Returns

    value for autoDegradeMaxSize

  - ### setAutoDegradeMaxSize

    public static void setAutoDegradeMaxSize(boolean value)

    Indicates whether a high value for default maxSize will be reduced to a lower value if the underlying platform throws an exception.

    ###### Parameters

    - `value`: new value for autoDegradeMaxSize

  - ### getWidestChar

    public static char getWidestChar()

    Indicates the widest character in the alphabet, this is useful for detecting linebreaks internally. In CJK languages the widest char is different than W hence this functionality is exposed to developers.

    ###### Returns

    the widest character

  - ### setWidestChar

    public static void setWidestChar(char widestC)

    Indicates the widest character in the alphabet, this is useful for detecting linebreaks internally. In CJK languages the widest char is different than W hence this functionality is exposed to developers.

    ###### Parameters

    - `widestC`: the widest character

  - ### autoDetectWidestChar

    public static void autoDetectWidestChar(String s)

    Searches the given string for the widest character using char width, this operation should only be performed once and it solves cases where a devices language might have a char bigger than 'W' that isn't consistently bigger. Notice that this method will use the TextArea style font which might differ when switching themes etc.

    ###### Parameters

    - `s`: string to search using charWidth

  - ### isUseStringWidth

    public static boolean isUseStringWidth()

    By default text area uses charWidth since its much faster on some devices than string width. However, with some fonts and especially some languages (such as Arabic, Korean etc.) the width of the string drawn might not equal the summary of the width of the chars. Hence for portability to those languages/fonts this flag must be set to true.

    ###### Returns

    the value of useStringWidth

  - ### setUseStringWidth

    public static void setUseStringWidth(boolean aUseStringWidth)

    By default text area uses charWidth since its much faster on some devices than string width. However, with some fonts and especially some languages (such as Arabic, Korean etc.) the width of the string drawn might not equal the summary of the width of the chars. Hence for portability to those languages/fonts this flag must be set to true.

    ###### Parameters

    - `aUseStringWidth`: the new value for useStringWidth

  - ### initComponent

    protected void initComponent()
    Description copied from class: `Component`
    Allows subclasses to bind functionality that relies on fully initialized and "ready for action" component state
    Overrides:
      `initComponent` in class `Component`

  - ### deinitialize

    protected void deinitialize()
    Description copied from class: `Component`
    Invoked to indicate that the component initialization is being reversed since the component was detached from the container hierarchy. This allows the component to deregister animators and cleanup after itself. This method is the opposite of the initComponent() method.
    Overrides:
      `deinitialize` in class `Component`

  - ### initLaf

    protected void initLaf(UIManager uim)
    This method initializes the Component defaults constants
    Overrides:
      `initLaf` in class `Component`

  - ### getConstraint

    public int getConstraint()

    Returns the editing constraint value

    ###### Returns

    the editing constraint value

    ###### See also

    - #setConstraint

  - public void setConstraint(int constraint)

    Sets the constraint which provides a hint to the virtual keyboard input, notice this doesn't limit input type in any way!

    ###### Parameters

    - `constraint`: @param constraint one of ANY, EMAILADDR, NUMERIC, PHONENUMBER, URL, DECIMAL it can be bitwised or'd with one of PASSWORD, UNEDITABLE, SENSITIVE, NON_PREDICTIVE, INITIAL_CAPS_SENTENCE, INITIAL_CAPS_WORD. E.g. ANY | PASSWORD.

  - ### setWidth

    public void setWidth(int width)

    Sets the Component width, this method is exposed for the purpose of external layout managers and should not be invoked directly.

    If a user wishes to affect the component size, setPreferredSize should be used.

    ###### Parameters

    - `width`: the width of the component

    ###### See also

    - #setPreferredSize
    Overrides:
      `setWidth` in class `Component`

  - ### getText

    public String getText()

    Returns the text in the text area

    ###### Returns

    the text in the text area

    Specified by:
      `getText` in interface `TextHolder`

  - ### setText

    public void setText(String t)

    Sets the text within this text area

    ###### Parameters

    - `t`: new value for the text area
    Specified by:
      `setText` in interface `TextHolder`

  - ### getAsInt

    public int getAsInt(int invalid)

    Convenience method for numeric text fields, returns the value as a number or invalid if the value in the text field isn't a number

    ###### Parameters

    - `invalid`: in case the text isn't an integer this number will be returned

    ###### Returns

    the int value of the text field

  - ### getAsLong

    public long getAsLong(long invalid)

    Convenience method for numeric text fields, returns the value as a number or invalid if the value in the text field isn't a number

    ###### Parameters

    - `invalid`: in case the text isn't a long this number will be returned

    ###### Returns

    the long value of the text field

  - ### getAsDouble

    public double getAsDouble(double invalid)

    Convenience method for numeric text fields, returns the value as a number or invalid if the value in the text field isn't a number

    ###### Parameters

    - `invalid`: in case the text isn't an double this number will be returned

    ###### Returns

    the double value of the text field

  - ### isEditable

    public boolean isEditable()

    Returns true if this area is editable

    ###### Returns

    true if this area is editable

    Specified by:
      `isEditable` in interface `Editable`
    Overrides:
      `isEditable` in class `Component`

  - ### setEditable

    public void setEditable(boolean b)

    Sets this text area to be editable or readonly

    ###### Parameters

    - `b`: true is text are is editable; otherwise false

  - ### getPreferredTabIndex

    public int getPreferredTabIndex()
    Description copied from class: `Component`

    Gets the preferred tab index of this component. Tab indices are used to specify the traversal order when tabbing from component to component in a form.

    Tab index meanings work similar to the HTML tabIndex attribute. A tab Index of -1 (the default value) results in the field not being traversable using the keyboard (or using the next/prev buttons in devices' virtual keyboards). A tab index of 0 results in the component's traversal order being dictated by the natural traversal order of the form.

    Use `Form#getTabIterator(com.codename1.ui.Component)` to obtain the complete traversal order for all components in the form.

    Best practice is to only explicitly set preferred tabIndex values of 0 if you want the component to be traversable, or -1 if you don't want the component to be traversable. Explicitly setting a positive preferred tab index may result in unexpected results.

    How the Preferred Tab Index is Used

    When the user tries to "tab" to the next field (or presses the "Next" button on the virtual keyboard), this triggers a call to `Form#getTabIterator(com.codename1.ui.Component)`, crawls the component hierarchy and returns a `java.util.ListIterator` of all of the traversable fields in the form in the order they should be traversed. This order is determined by the layout managers on the form. The core layout managers define sensible traversal orders by default. If you have a custom layout manager, you can override its traversal order by implementing the `com.codename1.ui.layouts.Layout#overridesTabIndices(com.codename1.ui.Container)` and `com.codename1.ui.layouts.Layout#getChildrenInTraversalOrder(com.codename1.ui.Container)` methods.

    ###### Returns

    the tabbing index

    Overrides:
      `getPreferredTabIndex` in class `Component`

  - ### getMaxSize

    public int getMaxSize()

    Returns the maximum size for the text area

    ###### Returns

    the maximum size for the text area

  - ### setMaxSize

    public void setMaxSize(int maxSize)

    Sets the maximum size of the text area

    ###### Parameters

    - `maxSize`: the maximum size of the text area

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

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

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

  - ### isScrollableY

    public boolean isScrollableY()

    Indicates whether the component should/could scroll on the Y axis

    ###### Returns

    whether the component is scrollable on the X axis

    Overrides:
      `isScrollableY` 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`

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

  - ### getColumns

    public int getColumns()

    Returns the number of columns in the text area

    ###### Returns

    the number of columns in the text area

  - ### setColumns

    public void setColumns(int columns)

    Sets the number of columns in the text area

    ###### Parameters

    - `columns`: number of columns

  - ### getActualRows

    public int getActualRows()

    Returns the number of actual rows in the text area taking into consideration growsByContent

    ###### Returns

    the number of rows in the text area

  - ### getRows

    public int getRows()

    Returns the number of rows in the text area

    ###### Returns

    the number of rows in the text area

  - ### setRows

    public void setRows(int rows)

    Sets the number of rows in the text area

    ###### Parameters

    - `rows`: number of rows

  - ### getLines

    public int getLines()

    Returns the number of text lines in the TextArea

    ###### Returns

    the number of text lines in the TextArea

  - ### getTextAt

    public String getTextAt(int line)

    Returns the text in the given row of the text box

    ###### Parameters

    - `line`: the line number in the text box

    ###### Returns

    the text of the line

  - ### preprocess

    protected char[] preprocess(String text)

    Override this to modify the text for rendering in cases of invalid characters for display, this method allows the developer to replace such characters e.g.: replace "\t" with 4 spaces

    ###### Parameters

    - `text`: the text to process

    ###### Returns

    the given string as a processed char array ready for rendering

  - ### getRowsGap

    public int getRowsGap()

    Gets the num of pixels gap between the rows

    ###### Returns

    the gap between rows in pixels

  - ### setRowsGap

    public void setRowsGap(int rowsGap)

    The gap in pixels between rows

    ###### Parameters

    - `rowsGap`: num of pixels to gap between rows

  - ### paint

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

    ###### Parameters

    - `g`: the component graphics
    Specified by:
      `paint` in interface `Animation`
    Overrides:
      `paint` 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 `Component`

  - ### calcScrollSize

    protected Dimension calcScrollSize()

    Method that can be overriden to represent the actual size of the component when it differs from the desireable size for the viewport

    ###### Returns

    scroll size, by default this is the same as the preferred size

    Overrides:
      `calcScrollSize` in class `Component`

  - ### addActionListener

    public void addActionListener(ActionListener a)

    Add an action listener which is invoked when the text area was modified not during modification. A text field might never fire an action event if it is edited in place and the user never leaves the text field!

    ###### Parameters

    - `a`: actionListener
    Specified by:
      `addActionListener` in interface `ActionSource`

  - ### removeActionListener

    public void removeActionListener(ActionListener a)

    Removes an action listener

    ###### Parameters

    - `a`: actionListener
    Specified by:
      `removeActionListener` in interface `ActionSource`

  - ### addCloseListener

    public void addCloseListener(ActionListener l)

    Adds a listener to be called with this TextArea is "closed". I.e. when it is no longer the active virtual input device for the form.

    ###### Parameters

    - `l`

    ###### See also

    - Form#setCurrentInputDevice(com.codename1.ui.VirtualInputDevice)

  - ### removeCloseListener

    public void removeCloseListener(ActionListener l)

    Removes close listener.

    ###### Parameters

    - `l`

    ###### See also

    - #addCloseListener(com.codename1.ui.events.ActionListener)

    - Form#setCurrentInputDevice(com.codename1.ui.VirtualInputDevice)

  - ### isGrowByContent

    public boolean isGrowByContent()

    Indicates that the text area should "grow" in height based on the content beyond the limits indicate by the rows variable

    ###### Returns

    true if the text component should grow and false otherwise

  - ### setGrowByContent

    public void setGrowByContent(boolean growByContent)

    Indicates that the text area should "grow" in height based on the content beyond the limits indicate by the rows variable

    ###### Parameters

    - `growByContent`: true if the text component should grow and false otherwise

  - ### getUnsupportedChars

    public String getUnsupportedChars()

    Unsupported characters is a string that contains characters that cause issues when rendering on some problematic fonts. The rendering engine can thus remove them when drawing.

    ###### Returns

    unsupported characters string

  - ### setUnsupportedChars

    public void setUnsupportedChars(String unsupportedChars)

    Unsupported characters is a string that contains characters that cause issues when rendering on some problematic fonts. The rendering engine can thus remove them when drawing.

    ###### Parameters

    - `unsupportedChars`: the unsupported character string

  - ### getLinesToScroll

    public int getLinesToScroll()

    Indicates the number of lines to scroll with every scroll operation

    ###### Returns

    number bigger or equal to 1

  - ### setLinesToScroll

    public void setLinesToScroll(int linesToScroll)

    Indicates the number of lines to scroll with every scroll operation

    ###### Parameters

    - `linesToScroll`: number bigger or equal to 1

  - ### isSingleLineTextArea

    public boolean isSingleLineTextArea()

    Indicates whether this is a single line text area, in which case "growing" won't work as expected.

    ###### Returns

    true if this is a single line text area

  - ### setSingleLineTextArea

    public void setSingleLineTextArea(boolean singleLineTextArea)

    Indicates whether this is a single line text area, in which case "growing" won't work as expected.

    ###### Parameters

    - `singleLineTextArea`: set to true to force a single line text

  - ### getAlignment

    public int getAlignment()

    Returns the alignment of the TextArea

    ###### Returns

    the alignment of the TextArea one of: CENTER, LEFT, RIGHT

    ###### Deprecated

    use Style.getAlignment instead

    ###### See also

    - #CENTER

    - #LEFT

    - #RIGHT

  - ### setAlignment

    public void setAlignment(int align)

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

    ###### Parameters

    - `align`: alignment value

    ###### Deprecated

    use Style.setAlignment instead

    ###### See also

    - #CENTER

    - #LEFT

    - #RIGHT

  - ### getAbsoluteAlignment

    public int getAbsoluteAlignment()

    Returns the absolute alignment of the TextArea In RTL LEFT alignment is actually RIGHT, but this method returns the actual alignment

    ###### Returns

    the alignment of the TextArea one of: CENTER, LEFT, RIGHT

    ###### Deprecated

    this method is redundant and no longer used

    ###### See also

    - #CENTER

    - #LEFT

    - #RIGHT

  - ### isPendingCommit

    public boolean isPendingCommit()

    Returns true if the text field is waiting for a commit on editing

    ###### Returns

    true if a commit is pending

  - ### getCursorPosition

    public int getCursorPosition()

    Returns the position of the cursor char position

    ###### Returns

    the cursor position

  - ### getCursorY

    public int getCursorY()

    Returns the position of the cursor line position

    ###### Returns

    the cursor line position

  - ### getCursorX

    public int getCursorX()

    Returns the position of the cursor char position in the current line.

    ###### Returns

    the cursor char position in the current line

  - ### isQwertyInput

    public boolean isQwertyInput()

    True is this is a qwerty device or a device that is currently in qwerty mode.

    ###### Returns

    currently defaults to false

  - ### getInputMode

    public String getInputMode()

    Returns the currently selected input mode

    ###### Returns

    Returns:
      the display name of the input mode by default the following modes are supported: Abc, ABC, abc, 123

  - ### getInputModeOrder

    public String[] getInputModeOrder()

    Returns the order in which input modes are toggled

    ###### Returns

    the order of the input modes

  - ### isEnableInputScroll

    public boolean isEnableInputScroll()

    Indicates whether text field input should scroll to the right side when no more room for the input is present.

    ###### Returns

    true if scrolling is enabled

  - ### isEnterKey

    protected boolean isEnterKey(int keyCode)

    Indicates the enter key to be used for editing the text area and by the text field

    ###### Parameters

    - `keyCode`: the key tested

  - ### getHint

    public String getHint()

    Returns the hint text

    ###### Returns

    the hint text or null

  - ### setHint

    public void setHint(String hint)

    Sets the TextArea hint text, the hint text is displayed on the TextArea When there is no text in the TextArea

    ###### Parameters

    - `hint`: the hint text to display

  - ### getHintIcon

    public Image getHintIcon()

    Returns the hint icon

    ###### Returns

    the hint icon

  - ### setHintIcon

    public void setHintIcon(Image icon)

    Sets the TextArea hint icon, the hint is displayed on the TextArea When there is no text in the TextArea

    ###### Parameters

    - `icon`: the icon

  - ### setHint

    public void setHint(String hint, Image icon)

    Sets the TextArea hint text and Icon, the hint text and icon are displayed on the TextArea when there is no text in the TextArea

    ###### Parameters

    - `hint`: the hint text to display

    - `icon`: the hint icon to display

  - ### getHintLabel

    public Label getHintLabel()

    Returns the hint label component that can be customized directly

    ###### Returns

    hint label component

  - ### getVerticalAlignment

    public int getVerticalAlignment()

    Returns the vertical alignment of the text field.

    For multi-line text areas, this alignment is applied only while there is extra vertical space in the component. If the text content uses all available height (or overflows), the rendering naturally starts from the top.

    ###### Returns

    the vertical alignment of the TextField one of: CENTER, TOP, BOTTOM

    ###### See also

    - #CENTER

    - #TOP

    - #BOTTOM

  - ### setVerticalAlignment

    public void setVerticalAlignment(int valign)

    Sets the vertical alignment of the text field to one of: CENTER, TOP, BOTTOM

    For multi-line text areas, this alignment is applied only when there is extra vertical space in the component. If there is no extra room, alignment becomes effectively top-aligned because content already fills the available area.

    ###### Parameters

    - `valign`: alignment value

    ###### See also

    - #CENTER

    - #TOP

    - #BOTTOM

  - ### getBindablePropertyNames

    public String[] getBindablePropertyNames()

    Returns the names of the properties within this component that can be bound for persistence, the order of these names mean that the first one will be the first bound

    ###### Returns

    a string array of property names or null

    ###### Deprecated

    this mapped to an older iteration of properties that is no longer used

    Overrides:
      `getBindablePropertyNames` in class `Component`

  - ### getBindablePropertyTypes

    public Class[] getBindablePropertyTypes()

    Returns the types of the properties that are bindable within this component

    ###### Returns

    the class for binding

    ###### Deprecated

    this mapped to an older iteration of properties that is no longer used

    Overrides:
      `getBindablePropertyTypes` in class `Component`

  - ### bindProperty

    public void bindProperty(String prop, BindTarget target)

    Binds the given property name to the given bind target

    ###### Parameters

    - `prop`: the property name

    - `target`: the target binder

    ###### Deprecated

    this mapped to an older iteration of properties that is no longer used

    ###### Deprecated

    uses the deprecated BindTarget interface

    Overrides:
      `bindProperty` in class `Component`

  - ### unbindProperty

    public void unbindProperty(String prop, BindTarget target)

    Removes a bind target from the given property name

    ###### Parameters

    - `prop`: the property names

    - `target`: the target binder

    ###### Deprecated

    this mapped to an older iteration of properties that is no longer used

    ###### Deprecated

    uses the deprecated BindTarget interface

    Overrides:
      `unbindProperty` in class `Component`

  - ### getBoundPropertyValue

    public Object getBoundPropertyValue(String prop)

    Allows the binding code to extract the value of the property

    ###### Parameters

    - `prop`: the property

    ###### Returns

    the value for the property

    ###### Deprecated

    this mapped to an older iteration of properties that is no longer used

    Overrides:
      `getBoundPropertyValue` in class `Component`

  - ### setBoundPropertyValue

    public void setBoundPropertyValue(String prop, Object value)

    Sets the value of a bound property within this component, notice that this method MUST NOT fire the property change event when invoked to prevent recursion!

    ###### Parameters

    - `prop`: the property whose value should be set

    - `value`: the value

    ###### Deprecated

    this mapped to an older iteration of properties that is no longer used

    Overrides:
      `setBoundPropertyValue` in class `Component`

  - ### getGrowLimit

    public int getGrowLimit()

    Indicates the maximum number of rows in a text area after it has grown, -1 indicates no limit

    ###### Returns

    the growLimit

  - ### setGrowLimit

    public void setGrowLimit(int growLimit)

    Indicates the maximum number of rows in a text area after it has grown, -1 indicates no limit

    ###### Parameters

    - `growLimit`: the growLimit to set

  - ### isEndsWith3Points

    public boolean isEndsWith3Points()

    If the TextArea text is too long to fit the text to the widget this will add "..." at the last displayable row. This flag is only applicable when there is a grow limit on the TextArea. E.g. a TextArea with potentially 10 rows can be displayed in 4 rows where the last row can be truncated and end with 3 points. By default this is set to false

    ###### Returns

    true if this TextArea adds "..." when the text is too long

  - ### setEndsWith3Points

    public void setEndsWith3Points(boolean endsWith3Points)

    If the TextArea text is too long to fit the text to the widget this will add "..." at the last displayable row. This flag is only applicable when there is a grow limit on the TextArea. E.g. a TextArea with potentially 10 rows can be displayed in 4 rows where the last row can be truncated and end with 3 points. By default this is set to false

    ###### Parameters

    - `endsWith3Points`: true if text should add "..." at the end

  - ### registerAsInputDevice

    public void registerAsInputDevice()

    Registers this TextArea as the current input device for the current form.

    ###### Deprecated

  - ### startEditing

    public void startEditing()
    Launches the text field editing, notice that calling this in a callSerially is generally considered good practice

  - ### startEditingAsync

    public void startEditingAsync()
    Launches the text field editing in a callserially call
    Specified by:
      `startEditingAsync` in interface `Editable`
    Overrides:
      `startEditingAsync` in class `Component`

  - ### isEditing

    public boolean isEditing()

    Indicates whether we are currently editing this text area

    ###### Returns

    true if Display.getInstance().isTextEditing(this)

    Specified by:
      `isEditing` in interface `Editable`
    Overrides:
      `isEditing` in class `Component`

  - ### stopEditing

    public void stopEditing()
    Stops text editing of this field if it is being edited

  - ### stopEditing

    public void stopEditing(Runnable onFinish)

    Stops text editing of this field if it is being edited

    ###### Parameters

    - `onFinish`: invoked when editing stopped
    Specified by:
      `stopEditing` in interface `Editable`
    Overrides:
      `stopEditing` in class `Component`

  - ### getStyle

    public Style getStyle()

    Returns the current Component Style allowing code to draw the current component, you should normally use getUnselected/Pressed/DisabledStyle() and not this method since it will return different values based on component state.

    ###### Returns

    the component Style object

    We override get style here to return the selected style when editing

    ###### Returns

    the selected style if editing, `super.getStyle()` otherwise

    Overrides:
      `getStyle` in class `Component`

  - ### addDataChangedListener

    public void addDataChangedListener(DataChangedListener d)

    Adds a listener for data change events it will be invoked for every change made to the text field, notice most platforms will invoke only the DataChangedListener.CHANGED event

    ###### Parameters

    - `d`: the listener

  - ### removeDataChangedListener

    public void removeDataChangedListener(DataChangedListener d)

    Removes the listener for data change events

    ###### Parameters

    - `d`: the listener

  - ### addDataChangeListener

    public void addDataChangeListener(DataChangedListener d)

    Adds a listener for data change events it will be invoked for every change made to the text field, notice most platforms will invoke only the DataChangedListener.CHANGED event

    ###### Parameters

    - `d`: the listener

    ###### Deprecated

    use #addDataChangedListener(DataChangedListener) instead

  - ### removeDataChangeListener

    public void removeDataChangeListener(DataChangedListener d)

    Removes the listener for data change events

    ###### Parameters

    - `d`: the listener

    ###### Deprecated

    use #removeDataChangedListener(DataChangedListener) instead

  - ### fireDataChanged

    public void fireDataChanged(int type, int index)

    Alert the TextField listeners the text has been changed on the TextField

    ###### Parameters

    - `type`: the event type: Added, Removed or Change

    - `index`: cursor location of the event

  - ### getDoneListener

    public ActionListener getDoneListener()

    Gets the done listener of this TextField.

    ###### Returns

    the done listener or null if not exists

  - ### setDoneListener

    public void setDoneListener(ActionListener l)

    Sets a Done listener on the TextField - notice this listener will be called only on supported platforms that supports done action on the keyboard

    ###### Parameters

    - `l`: the listener

  - ### fireDoneEvent

    public void fireDoneEvent()
    Fire the done event to done listener

  - ### fireDoneEvent

    public void fireDoneEvent(int keyEvent)

  - ### isActAsLabel

    public boolean isActAsLabel()

    This flag indicates that the text area should try to act as a label and try to fix more accurately within it's bounds this might make it slower as a result

    ###### Returns

    the actAsLabel

  - ### setActAsLabel

    public void setActAsLabel(boolean actAsLabel)

    This flag indicates that the text area should try to act as a label and try to fix more accurately within it's bounds this might make it slower as a result

    ###### Parameters

    - `actAsLabel`: the actAsLabel to set

  - ### shouldRenderComponentSelection

    protected boolean shouldRenderComponentSelection()

    Special case for text components, if they are editing they should always render the selected state

    A component can indicate whether it is interested in rendering it's selection explicitly, this defaults to true in non-touch UI's and false in touch UI's except for the case where a user clicks the screen.

    ###### Returns

    Defaults to false

    ###### Returns

    true if editing

    Overrides:
      `shouldRenderComponentSelection` in class `Component`

  - ### calculateTextSelectionSpan

    protected TextSelection.Spans calculateTextSelectionSpan(TextSelection sel)

    Calculates the spans for the the given text selection. This should generally just delegate to the appropriate method in the look and feel for performing the layout calculation.

    ###### Parameters

    - `sel`: The TextSelection

    ###### Since

    7.0

  - ### isTextSelectionEnabled

    public boolean isTextSelectionEnabled()

    Returns true if text selection is enabled on this label. Default is false. To enable text selection, you must enable text selection on the Form with `Form#getTextSelection()` and `TextSelection#setEnabled(boolean)`, and also ensure that the label's text selection is enabled via `#setTextSelectionEnabled(boolean)`.

    ###### Since

    7.0

    ###### See also

    - #setTextSelectionEnabled(boolean)

  - ### setTextSelectionEnabled

    public void setTextSelectionEnabled(boolean enabled)

    Enables text selection on this TextArea. Text selection must also be enabled on the Form in order to text selection to be activated.

    ###### Parameters

    - `enabled`

    ###### Since

    7.0

    ###### See also

    - #setTextSelectionEnabled(boolean)

    - Form#getTextSelection()

    - TextSelection#setEnabled(boolean)

  - ### getTextSelectionSupport

    public TextSelection.TextSelectionSupport getTextSelectionSupport()

    Returns text selection support object for this component. Only used by components that support text selection (e.g. Labels, un-editable text fields, etc..).

    ###### Returns

    text selection support object

    ###### Since

    7.0

    Overrides:
      `getTextSelectionSupport` in class `Component`