Class ComboBox<T>
- All Implemented Interfaces:
Animation, Editable, ActionSource, StyleListener
A ComboBox is a list that allows only one selection at a time, when a user clicks
the ComboBox a popup button with the full list of elements allows the selection of
a single element. The ComboBox is driven by the list model and allows all the renderer
features of the List as well.
The ComboBox is notoriously hard to style properly as it relies on a complex dynamic of
popup renderer and instantly visible renderer. The UIID for the ComboBox is "ComboBox"
however if you set it to something else all the other UIID's will also change their prefix. E.g. the "ComboBoxPopup"
UIID will become "MyNewUIIDPopup".
The combo box defines the following UIID's by default:
-
ComboBox -
ComboBoxItem -
ComboBoxFocus -
PopupContentPane -
PopupItem -
PopupFocus
This class also defines theme constants that allow some native themes to manipulate its behavior e.g.:
-
popupTitleBool - shows the "label for" value as the title of the popup dialog
-
popupCancelBodyBool - Adds a cancel button into the popup dialog
-
centeredPopupBool - shows the popup dialog in the center of the screen instead of under the popup
-
otherPopupRendererBool - Uses a different list cell render for the popup than the one used for the
ComboBoxitself. When this is falsePopupItem&PopupFocusbecome irrelevant. Notice that the Android native theme defines this to true.
iOS doesn't use combo boxes as part of its UI paradigm. Its available there mostly in web applications and feels
unnatural in iOS which is why we recommend using the com.codename1.ui.spinner.Picker class.
The sample code below uses the com.codename1.ui.list.GenericListCellRenderer to create a richer
ComboBox UI.
public void showForm() {
Form hi = new Form("ComboBox", new BoxLayout(BoxLayout.Y_AXIS));
ComboBox> combo = new ComboBox<> (
createListEntry("A Game of Thrones", "1996"),
createListEntry("A Clash Of Kings", "1998"),
createListEntry("A Storm Of Swords", "2000"),
createListEntry("A Feast For Crows", "2005"),
createListEntry("A Dance With Dragons", "2011"),
createListEntry("The Winds of Winter", "2016 (please, please, please)"),
createListEntry("A Dream of Spring", "Ugh"));
combo.setRenderer(new GenericListCellRenderer<>(new MultiButton(), new MultiButton()));
hi.show();
}
private Map createListEntry(String name, String date) {
Map entry = new HashMap<>();
entry.put("Line1", name);
entry.put("Line2", date);
return entry;
}
-
Field Summary
Fields inherited from class List
FIXED_CENTER, FIXED_LEAD, FIXED_NONE, FIXED_NONE_CYCLIC, FIXED_NONE_ONE_ELEMENT_MARGIN_FROM_EDGE, FIXED_TRAIL, HORIZONTAL, VERTICALFields inherited from class Component
BASELINE, BOTTOM, BRB_CENTER_OFFSET, BRB_CONSTANT_ASCENT, BRB_CONSTANT_DESCENT, BRB_OTHER, CENTER, CROSSHAIR_CURSOR, DEFAULT_CURSOR, DRAG_REGION_IMMEDIATELY_DRAG_X, DRAG_REGION_IMMEDIATELY_DRAG_XY, DRAG_REGION_IMMEDIATELY_DRAG_Y, DRAG_REGION_LIKELY_DRAG_X, DRAG_REGION_LIKELY_DRAG_XY, DRAG_REGION_LIKELY_DRAG_Y, DRAG_REGION_NOT_DRAGGABLE, DRAG_REGION_POSSIBLE_DRAG_X, DRAG_REGION_POSSIBLE_DRAG_XY, DRAG_REGION_POSSIBLE_DRAG_Y, E_RESIZE_CURSOR, HAND_CURSOR, LEFT, MOVE_CURSOR, N_RESIZE_CURSOR, NE_RESIZE_CURSOR, NW_RESIZE_CURSOR, RIGHT, S_RESIZE_CURSOR, SE_RESIZE_CURSOR, SW_RESIZE_CURSOR, TEXT_CURSOR, TOP, W_RESIZE_CURSOR, WAIT_CURSOR -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected DimensionCalculates the preferred size based on component content.protected DialogcreatePopupDialog(List<T> l) Subclasses can override this method to change the creation of the dialogCreates the list object used within the popup dialog.protected voidWhen working in 3 softbutton mode "fire" key (center softbutton) is sent to this method in order to allow 3 button devices to work properly.intgetBaseline(int width, int height) The baseline for the component text according to which it should be aligned with other components for best visual look.Gets the ComboBox drop down iconintReturns the list orientationReturns 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 externallyprotected RectangleReturns the component bounds for scrolling which might differ from the getBounds for large components e.g.booleanWhen this flag is active the combo box acts as a button that opens a dialog that looks like a spinner this allows creating user interfaces for touch devices where a spinner UI approach is more common than a combo box paradigm.static booleanWhen this flag is active the combo box acts as a button that opens a dialog that looks like a spinner this allows creating user interfaces for touch devices where a spinner UI approach is more common than a combo box paradigm.static booleanIndicates whethe the soft buttons for select/cancel should appear for the combo box by defaultbooleanIndicates whethe the soft buttons for select/cancel should appear for the combo boxbooleanReturns true if the popup dialog is currently showing for this combobox.voidkeyReleased(int keyCode) If this Component is focused, the key released event will call this methodprotected voidlaidOut()This is a callback method to inform the Component when it's been laidout on the parent ContainervoidThis 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.voidpointerDragged(int x, int y) If this Component is focused, the pointer dragged event will call this methodvoidpointerHover(int[] x, int[] y) Invoked for devices where the pointer can hover without actually clicking the display.voidpointerHoverReleased(int[] x, int[] y) Invoked for devices where the pointer can hover without actually clicking the display.voidpointerPressed(int x, int y) If this Component is focused, the pointer pressed event will call this methodvoidpointerReleased(int x, int y) If this Component is focused, the pointer released event will call this methodvoidsetActAsSpinnerDialog(boolean actAsSpinnerDialog) When this flag is active the combo box acts as a button that opens a dialog that looks like a spinner this allows creating user interfaces for touch devices where a spinner UI approach is more common than a combo box paradigm.voidsetComboBoxImage(Image comboBoxImage) Sets the ComboBox drop down iconstatic voidsetDefaultActAsSpinnerDialog(boolean aDefaultActAsSpinnerDialog) When this flag is active the combo box acts as a button that opens a dialog that looks like a spinner this allows creating user interfaces for touch devices where a spinner UI approach is more common than a combo box paradigm.static voidsetDefaultIncludeSelectCancel(boolean aDefaultIncludeSelectCancel) Indicates whethe the soft buttons for select/cancel should appear for the combo box by defaultvoidsetIncludeSelectCancel(boolean includeSelectCancel) Indicates whethe the soft buttons for select/cancel should appear for the combo boxvoidsetSelectedIndex(int selection) Sets the current selected offset in the list, by default this implementation will scroll the list to the selection if the selection is outside of the screenvoidsetSelectedIndex(int selection, boolean scroll) Sets the current selected offset in the listvoidThis method sets the Component the Unique identifier.protected CommandshowPopupDialog(Dialog popupDialog, List l) Shows the popup dialog for the combo box and returns the resulting command.Methods inherited from class List
addActionListener, addItem, addSelectionListener, animate, fireActionEvent, fireActionEvent, getActionListeners, getCurrentSelected, getDragRegionStatus, getFixedSelection, getGridPosX, getGridPosY, getHint, getHintIcon, getItemGap, getListeners, getListSizeCalculationSampleCount, getMaxElementHeight, getMinElementHeight, getModel, getRenderer, getRenderingPrototype, getSelectedIndex, getSelectedItem, getSideGap, initLaf, isCommandList, isDefaultFireOnClick, isDefaultIgnoreFocusComponentWhenUnfocused, isIgnoreFocusComponentWhenUnfocused, isLongPointerPressActionEnabled, isMutableRendererBackgrounds, isNumericKeyActions, isScrollableX, isScrollableY, isSelectableInteraction, isTactileTouch, keyPressed, listSelectionChanged, longPointerPress, modelChanged, paramString, refreshTheme, removeActionListener, removeSelectionListener, scrollRectToVisible, setCommandList, setDefaultFireOnClick, setDefaultIgnoreFocusComponentWhenUnfocused, setFireOnClick, setFixedSelection, setHandlesInput, setHint, setHint, setHintIcon, setIgnoreFocusComponentWhenUnfocused, setInputOnFocus, setItemGap, setListCellRenderer, setListSizeCalculationSampleCount, setLongPointerPressActionEnabled, setMaxElementHeight, setMinElementHeight, setModel, setMutableRendererBackgrounds, setNumericKeyActions, setOrientation, setPaintFocusBehindList, setRenderer, setRenderingPrototype, setScrollToSelected, setSelectedItem, setShouldCalcPreferredSize, shouldRenderSelection, sizeMethods inherited from class Component
addDragFinishedListener, addDragOverListener, addDropListener, addFocusListener, addLongPressListener, addPointerDraggedListener, addPointerPressedListener, addPointerReleasedListener, addPullToRefresh, addScrollListener, addStateChangeListener, announceForAccessibility, bindProperty, blocksSideSwipe, calcScrollSize, cancelRepaints, clearClientProperties, contains, containsOrOwns, createStyleAnimation, deinitialize, deinitializeCustomStyle, dragEnter, dragExit, dragFinished, draggingOver, dragInitiated, drawDraggedImage, drop, focusGained, focusLost, getAbsoluteX, getAbsoluteY, getAccessibilityText, getAllStyles, getAnimationManager, getBaselineResizeBehavior, getBindablePropertyNames, getBindablePropertyTypes, getBorder, getBottomGap, getBoundPropertyValue, getBounds, getBounds, getClientProperty, getCloudBoundProperty, getCloudDestinationProperty, getComponentForm, getComponentState, getCursor, getDefaultDragTransparency, getDirtyRegion, getDisabledStyle, getDraggedx, getDraggedy, getDragImage, getDragSpeed, getDragTransparency, getEditingDelegate, 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, getPreferredTabIndex, getPreferredW, getPressedStyle, getPropertyNames, getPropertyTypeNames, getPropertyTypes, getPropertyValue, getSameHeight, getSameWidth, getScrollable, getScrollAnimationSpeed, getScrollDimension, getScrollOpacity, getScrollOpacityChangeSpeed, getScrollX, getScrollY, getSelectCommandText, getSelectedStyle, getStyle, getTabIndex, getTensileLength, getTextSelectionSupport, getTooltip, getUIID, getUIManager, getUnselectedStyle, getVisibleBounds, getWidth, getX, getY, growShrink, handlesInput, hasFixedPreferredSize, hasFocus, hideNativeOverlay, initComponent, initCustomStyle, initDisabledStyle, initPressedStyle, initSelectedStyle, initUnselectedStyle, installDefaultPainter, isAlwaysTensile, isBlockLead, isCellRenderer, isChildOf, isDragActivated, isDragAndDropOperation, isDraggable, isDragRegion, isDropTarget, isEditable, isEditing, isEnabled, isFlatten, isFocusable, isGrabsPointerEvents, isHidden, isHidden, isHideInLandscape, isHideInPortrait, isIgnorePointerEvents, isInClippingRegion, isInitialized, isOpaque, isOwnedBy, isPinchBlocksDragAndDrop, isRippleEffect, isRTL, isScrollable, isScrollVisible, isSetCursorSupported, isSmoothScrolling, isSnapToGrid, isStickyDrag, isTactileTouch, isTensileDragEnabled, isTraversable, isVisible, keyRepeated, longKeyPress, onScrollX, onScrollY, onSetFocusable, paintBackground, paintBackgrounds, paintBorder, paintBorderBackground, paintComponent, paintComponent, paintIntersectingComponentsAbove, paintLock, paintLockRelease, paintRippleOverlay, paintScrollbars, paintScrollbarX, paintScrollbarY, paintShadows, parsePreferredSize, pinch, pinch, pinchReleased, pointerDragged, pointerHoverPressed, pointerPressed, pointerReleased, putClientProperty, refreshTheme, refreshTheme, remove, removeDragFinishedListener, removeDragOverListener, removeDropListener, removeFocusListener, removeLongPressListener, removePointerDraggedListener, removePointerPressedListener, removePointerReleasedListener, removeScrollListener, removeStateChangeListener, repaint, repaint, requestFocus, resetFocusable, respondsToPointerEvents, scrollRectToVisible, scrollRectToVisible, setAccessibilityText, setAlwaysTensile, setBlockLead, setBoundPropertyValue, setCellRenderer, setCloudBoundProperty, setCloudDestinationProperty, setComponentState, setCursor, setDefaultDragTransparency, setDirtyRegion, setDisabledStyle, setDraggable, setDragTransparency, setDropTarget, setEditingDelegate, setEnabled, setFlatten, setFocus, setFocusable, setGrabsPointerEvents, 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, setSize, setSmoothScrolling, setSnapToGrid, setTabIndex, setTactileTouch, setTensileDragEnabled, setTensileLength, setTooltip, setTraversable, setUIID, setUIIDFinal, setUnselectedStyle, setVisible, setWidth, setX, setY, shouldBlockSideSwipe, shouldBlockSideSwipeLeft, shouldBlockSideSwipeRight, shouldRenderComponentSelection, showNativeOverlay, startEditingAsync, stopEditing, stripMarginAndPadding, styleChanged, toImage, toString, unbindProperty, updateNativeOverlay, visibleBoundsContainsMethods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface ActionSource
addActionListener, removeActionListener
-
Constructor Details
-
ComboBox
-
ComboBox
Creates a new instance of ComboBox
Parameters
items: set of items placed into the combo box model
-
ComboBox
public ComboBox()Constructs an empty combo box -
ComboBox
-
-
Method Details
-
isDefaultActAsSpinnerDialog
public static boolean isDefaultActAsSpinnerDialog()When this flag is active the combo box acts as a button that opens a dialog that looks like a spinner this allows creating user interfaces for touch devices where a spinner UI approach is more common than a combo box paradigm.
Returns
the defaultActAsSpinnerDialog
-
setDefaultActAsSpinnerDialog
public static void setDefaultActAsSpinnerDialog(boolean aDefaultActAsSpinnerDialog) When this flag is active the combo box acts as a button that opens a dialog that looks like a spinner this allows creating user interfaces for touch devices where a spinner UI approach is more common than a combo box paradigm.
Parameters
aDefaultActAsSpinnerDialog: the defaultActAsSpinnerDialog to set
-
isDefaultIncludeSelectCancel
public static boolean isDefaultIncludeSelectCancel()Indicates whethe the soft buttons for select/cancel should appear for the combo box by default
Returns
true if the soft buttons for select/cancel should appear for the combo box
-
setDefaultIncludeSelectCancel
public static void setDefaultIncludeSelectCancel(boolean aDefaultIncludeSelectCancel) Indicates whethe the soft buttons for select/cancel should appear for the combo box by default
Parameters
aDefaultIncludeSelectCancel: the new value
-
getComboBoxImage
Gets the ComboBox drop down icon
Returns
the drop down icon
-
setComboBoxImage
Sets the ComboBox drop down icon
Parameters
comboBoxImage: the drop down icon
-
setUIID
-
getBaseline
public 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.
Parameters
-
width: the component width -
height: the component height
Returns
baseline value from the top of the component
- Overrides:
getBaselinein classComponent
-
-
laidOut
-
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
Returns
the bounds of the component with absolute screen coordinates
- Overrides:
getSelectedRectin classList<T>
-
getVisibleBounds
Returns the component bounds for scrolling which might differ from the getBounds for large components e.g. list.
Returns
the component bounds
See also
-
#getX
-
#getY
-
#getVisibleBounds(com.codename1.ui.geom.Rectangle)
- Overrides:
getVisibleBoundsin classList<T>
-
-
setSelectedIndex
public void setSelectedIndex(int selection) Sets the current selected offset in the list, by default this implementation will scroll the list to the selection if the selection is outside of the screen
Parameters
index: the current selected offset in the list
- Overrides:
setSelectedIndexin classList<T>
-
setSelectedIndex
public void setSelectedIndex(int selection, boolean scroll) Sets the current selected offset in the list
Parameters
-
index: the current selected offset in the list -
scrollToSelection: @param scrollToSelection indicates whether scrolling to selection should occur if the selection is outside of view
- Overrides:
setSelectedIndexin classList<T>
-
-
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:
pointerHoverin classList<T>
-
-
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:
pointerHoverReleasedin classList<T>
-
-
createPopupDialog
-
isShowingPopupDialog
public boolean isShowingPopupDialog()Returns true if the popup dialog is currently showing for this combobox.
Since
8.0
-
showPopupDialog
Shows the popup dialog for the combo box and returns the resulting command. This method can be overriden by subclasses to modify the behavior of the class.
Parameters
-
popupDialog: the popup dialog -
l: the list within
Returns
the selected command
-
-
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:
fireClickedin classList<T>
-
createPopupList
-
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:
keyReleasedin classList<T>
-
pointerPressed
public void pointerPressed(int x, int y) If this Component is focused, the pointer pressed event will call this method
Parameters
-
x: the pointer x coordinate -
y: the pointer y coordinate
- Overrides:
pointerPressedin classList<T>
-
-
pointerDragged
public void pointerDragged(int x, int y) If this Component is focused, the pointer dragged event will call this method
Parameters
-
x: the pointer x coordinate -
y: the pointer y coordinate
- Overrides:
pointerDraggedin classList<T>
-
-
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:
pointerReleasedin classList<T>
-
-
paint
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
-
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:
calcPreferredSizein classList<T>
-
getOrientation
public int getOrientation()Returns the list orientation
Returns
the list orientation HORIZONTAL or VERTICAL
See also
-
#HORIZONTAL
-
#VERTICAL
- Overrides:
getOrientationin classList<T>
-
-
isIncludeSelectCancel
public boolean isIncludeSelectCancel()Indicates whethe the soft buttons for select/cancel should appear for the combo box
Returns
true if the soft buttons for select/cancel should appear for the combo box
-
setIncludeSelectCancel
public void setIncludeSelectCancel(boolean includeSelectCancel) Indicates whethe the soft buttons for select/cancel should appear for the combo box
Parameters
includeSelectCancel: the new value
-
isActAsSpinnerDialog
public boolean isActAsSpinnerDialog()When this flag is active the combo box acts as a button that opens a dialog that looks like a spinner this allows creating user interfaces for touch devices where a spinner UI approach is more common than a combo box paradigm.
Returns
the actAsSpinnerDialog
-
setActAsSpinnerDialog
public void setActAsSpinnerDialog(boolean actAsSpinnerDialog) When this flag is active the combo box acts as a button that opens a dialog that looks like a spinner this allows creating user interfaces for touch devices where a spinner UI approach is more common than a combo box paradigm.
Parameters
actAsSpinnerDialog: the actAsSpinnerDialog to set
-