public class ComboBox<T> extends List<T> implements ActionSource
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.:
ComboBox
itself. When this is false PopupItem
& PopupFocus
become 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 Picker
class.
The sample code below uses the GenericListCellRenderer
to create a richer
ComboBox
UI.
List
FIXED_CENTER, FIXED_LEAD, FIXED_NONE, FIXED_NONE_CYCLIC, FIXED_NONE_ONE_ELEMENT_MARGIN_FROM_EDGE, FIXED_TRAIL, HORIZONTAL, VERTICAL
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 and Description |
---|
ComboBox()
Constructs an empty combo box
|
ComboBox(ListModel<T> model)
Creates a new instance of ComboBox
|
ComboBox(Object... items)
Creates a new instance of ComboBox
|
ComboBox(Vector<T> items)
Creates a new instance of ComboBox
|
Modifier and Type | Method and Description |
---|---|
protected Dimension |
calcPreferredSize()
Calculates the preferred size based on component content.
|
protected Dialog |
createPopupDialog(List<T> l)
Subclasses can override this method to change the creation of the dialog
|
protected List<T> |
createPopupList()
Creates the list object used within the popup dialog.
|
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.
|
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.
|
Image |
getComboBoxImage()
Gets the ComboBox drop down icon
|
int |
getOrientation()
Returns the list orientation
|
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
|
protected Rectangle |
getVisibleBounds()
Returns the component bounds for scrolling which might differ from the getBounds for large components
e.g.
|
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.
|
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.
|
static boolean |
isDefaultIncludeSelectCancel()
Indicates whethe the soft buttons for select/cancel should appear for the combo box by default
|
boolean |
isIncludeSelectCancel()
Indicates whethe the soft buttons for select/cancel should appear for the combo box
|
boolean |
isShowingPopupDialog()
Returns true if the popup dialog is currently showing for this combobox.
|
void |
keyReleased(int keyCode)
If this Component is focused, the key released 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
|
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 |
pointerDragged(int x,
int y)
If this Component is focused, the pointer dragged event
will call this method
|
void |
pointerHover(int[] x,
int[] y)
Invoked for devices where the pointer can hover without actually clicking
the display.
|
void |
pointerHoverReleased(int[] x,
int[] y)
Invoked for devices where the pointer can hover without actually clicking
the display.
|
void |
pointerPressed(int x,
int y)
If this Component is focused, the pointer pressed event
will call this method
|
void |
pointerReleased(int x,
int y)
If this Component is focused, the pointer released event
will call this method
|
void |
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.
|
void |
setComboBoxImage(Image comboBoxImage)
Sets the ComboBox drop down icon
|
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.
|
static void |
setDefaultIncludeSelectCancel(boolean aDefaultIncludeSelectCancel)
Indicates whethe the soft buttons for select/cancel should appear for the combo box by default
|
void |
setIncludeSelectCancel(boolean includeSelectCancel)
Indicates whethe the soft buttons for select/cancel should appear for the combo box
|
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
|
void |
setSelectedIndex(int selection,
boolean scroll)
Sets the current selected offset in the list
|
void |
setUIID(String uiid)
This method sets the Component the Unique identifier.
|
protected Command |
showPopupDialog(Dialog popupDialog,
List l)
Shows the popup dialog for the combo box and returns the resulting command.
|
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, size
addDragFinishedListener, addDragOverListener, addDropListener, addFocusListener, addLongPressListener, addPointerDraggedListener, addPointerPressedListener, addPointerReleasedListener, addPullToRefresh, addScrollListener, addStateChangeListener, bindProperty, blocksSideSwipe, calcScrollSize, cancelRepaints, clearClientProperties, contains, containsOrOwns, createStyleAnimation, deinitialize, deinitializeCustomStyle, dragEnter, dragExit, dragFinished, draggingOver, dragInitiated, drawDraggedImage, drop, focusGained, focusLost, getAbsoluteX, getAbsoluteY, 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, 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, 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, setUnselectedStyle, setVisible, setWidth, setX, setY, shouldBlockSideSwipe, shouldBlockSideSwipeLeft, shouldBlockSideSwipeRight, shouldRenderComponentSelection, showNativeOverlay, startEditingAsync, stopEditing, stripMarginAndPadding, styleChanged, toImage, toString, unbindProperty, updateNativeOverlay, visibleBoundsContains
clone, equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
addActionListener, removeActionListener
public ComboBox(Vector<T> items)
items
- set of items placed into the combo box modelpublic ComboBox(Object... items)
items
- set of items placed into the combo box modelpublic ComboBox()
public static boolean isDefaultActAsSpinnerDialog()
public static void setDefaultActAsSpinnerDialog(boolean aDefaultActAsSpinnerDialog)
aDefaultActAsSpinnerDialog
- the defaultActAsSpinnerDialog to setpublic void setComboBoxImage(Image comboBoxImage)
comboBoxImage
- the drop down iconpublic Image getComboBoxImage()
public void setUIID(String uiid)
public int getBaseline(int width, int height)
getBaseline
in class Component
width
- the component widthheight
- the component heightprotected void laidOut()
public Rectangle getSelectedRect()
getSelectedRect
in class List<T>
protected Rectangle getVisibleBounds()
getVisibleBounds
in class List<T>
Component.getX()
,
Component.getY()
,
Component.getVisibleBounds(com.codename1.ui.geom.Rectangle)
public void setSelectedIndex(int selection)
setSelectedIndex
in class List<T>
selection
- the current selected offset in the listpublic void setSelectedIndex(int selection, boolean scroll)
setSelectedIndex
in class List<T>
selection
- the current selected offset in the listscroll
- indicates whether scrolling to selection should
occur if the selection is outside of viewpublic void pointerHover(int[] x, int[] y)
pointerHover
in class List<T>
x
- the pointer x coordinatey
- the pointer y coordinatepublic void pointerHoverReleased(int[] x, int[] y)
pointerHoverReleased
in class List<T>
x
- the pointer x coordinatey
- the pointer y coordinateprotected Dialog createPopupDialog(List<T> l)
l
- the list of the popuppublic boolean isShowingPopupDialog()
protected Command showPopupDialog(Dialog popupDialog, List l)
popupDialog
- the popup dialogl
- the list withinprotected void fireClicked()
fireClicked
in class List<T>
protected List<T> createPopupList()
public void keyReleased(int keyCode)
keyReleased
in class List<T>
keyCode
- the key code value to indicate a physical key.public void pointerPressed(int x, int y)
pointerPressed
in class List<T>
x
- the pointer x coordinatey
- the pointer y coordinatepublic void pointerDragged(int x, int y)
pointerDragged
in class List<T>
x
- the pointer x coordinatey
- the pointer y coordinatepublic void pointerReleased(int x, int y)
pointerReleased
in class List<T>
x
- the pointer x coordinatey
- the pointer y coordinatepublic void paint(Graphics g)
protected Dimension calcPreferredSize()
calcPreferredSize
in class List<T>
public int getOrientation()
getOrientation
in class List<T>
List.HORIZONTAL
,
List.VERTICAL
public boolean isIncludeSelectCancel()
public void setIncludeSelectCancel(boolean includeSelectCancel)
includeSelectCancel
- the new valuepublic static boolean isDefaultIncludeSelectCancel()
public static void setDefaultIncludeSelectCancel(boolean aDefaultIncludeSelectCancel)
aDefaultIncludeSelectCancel
- the new valuepublic boolean isActAsSpinnerDialog()
public void setActAsSpinnerDialog(boolean actAsSpinnerDialog)
actAsSpinnerDialog
- the actAsSpinnerDialog to set