Class JXComboBox<E>
- All Implemented Interfaces:
ActionListener,ImageObserver,ItemSelectable,MenuContainer,Serializable,EventListener,Accessible,ListDataListener
JComboBox that provides the following additional functionality:
Auto-starts edits correctly for AutoCompletion when inside a JTable.
A normal JComboBox fails to recognize the first key stroke when it has been
decorated.
Adds highlighting support.
- Author:
- Karl Schaefer, Jeanette Winzenburg
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprotected static classclassA decorator for the original ListCellRenderer.Nested classes/interfaces inherited from class javax.swing.JComboBox
JComboBox.AccessibleJComboBox, JComboBox.KeySelectionManagerNested classes/interfaces inherited from class javax.swing.JComponent
JComponent.AccessibleJComponentNested classes/interfaces inherited from class java.awt.Container
Container.AccessibleAWTContainerNested classes/interfaces inherited from class java.awt.Component
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy -
Field Summary
Fields inherited from class javax.swing.JComboBox
actionCommand, dataModel, editor, isEditable, keySelectionManager, lightWeightPopupEnabled, maximumRowCount, renderer, selectedItemReminderFields inherited from class javax.swing.JComponent
listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOWFields inherited from class java.awt.Component
accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENTFields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH -
Constructor Summary
ConstructorsConstructorDescriptionCreates aJXComboBoxwith a default data model.JXComboBox(E[] items) Creates aJXComboBoxthat contains the elements in the specified array.JXComboBox(Vector<E> items) Creates aJXComboBoxthat contains the elements in the specified Vector.JXComboBox(ComboBoxModel<E> model) Creates aJXComboBoxthat takes its items from an existingComboBoxModel. -
Method Summary
Modifier and TypeMethodDescriptionvoidaddHighlighter(Highlighter highlighter) Adds a Highlighter.protected ListCellRenderer<E>Creates and returns the default cell renderer to use.protected JComboBox.KeySelectionManagerprotected StringValueRegistryCreates and returns the default registry for StringValues.protected ChangeListenerCreates and returns the ChangeListener observing Highlighters.protected ComponentAdapterprotected ComponentAdaptergetComponentAdapter(int index) Convenience to access a configured ComponentAdapter.protected ChangeListenerReturns theChangeListenerto use with highlighters.Returns theHighlighters used by this column.getPopupListFor(JComboBox<? extends Object> comboBox) ListCellRenderer<? super E>getStringAt(int row) Returns the string representation of the cell value at the given position.protected StringValueRegistryReturns the StringValueRegistry which defines the string representation for each cells.Returns the renderer installed by client code or the default if none has been set.booleanPENDING JW to KS: review method naming - doesn't sound like valid English to me (no native speaker of course :-).protected booleanprocessKeyBinding(KeyStroke ks, KeyEvent e, int condition, boolean pressed) voidremoveHighlighter(Highlighter highlighter) Removes the given Highlighter.voidsetHighlighters(Highlighter... highlighters) Sets theHighlighters to the column, replacing any old settings.voidsetRenderer(ListCellRenderer<? super E> renderer) voidsetUseHighlightersForCurrentValue(boolean useHighlightersForCurrentValue) voidupdateUI()Methods inherited from class javax.swing.JComboBox
actionPerformed, actionPropertyChanged, addActionListener, addItem, addItemListener, addPopupMenuListener, configureEditor, configurePropertiesFromAction, contentsChanged, createActionPropertyChangeListener, fireActionEvent, fireItemStateChanged, firePopupMenuCanceled, firePopupMenuWillBecomeInvisible, firePopupMenuWillBecomeVisible, getAccessibleContext, getAction, getActionCommand, getActionListeners, getEditor, getItemAt, getItemCount, getItemListeners, getKeySelectionManager, getMaximumRowCount, getModel, getPopupMenuListeners, getPrototypeDisplayValue, getSelectedIndex, getSelectedItem, getSelectedObjects, getUI, getUIClassID, hidePopup, insertItemAt, installAncestorListener, intervalAdded, intervalRemoved, isEditable, isLightWeightPopupEnabled, isPopupVisible, paramString, processKeyEvent, removeActionListener, removeAllItems, removeItem, removeItemAt, removeItemListener, removePopupMenuListener, selectedItemChanged, selectWithKeyChar, setAction, setActionCommand, setEditable, setEditor, setEnabled, setKeySelectionManager, setLightWeightPopupEnabled, setMaximumRowCount, setModel, setPopupVisible, setPrototypeDisplayValue, setSelectedIndex, setSelectedItem, setUI, showPopupMethods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, updateMethods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusDownCycle, validate, validateTreeMethods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setMixingCutoutShape, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
-
Constructor Details
-
JXComboBox
public JXComboBox()Creates aJXComboBoxwith a default data model. The default data model is an empty list of objects. UseaddItemto add items. By default the first item in the data model becomes selected.- See Also:
-
JXComboBox
Creates aJXComboBoxthat takes its items from an existingComboBoxModel. Since theComboBoxModelis provided, a combo box created using this constructor does not create a default combo box model and may impact how the insert, remove and add methods behave.- Parameters:
model- theComboBoxModelthat provides the displayed list of items- See Also:
-
JXComboBox
Creates aJXComboBoxthat contains the elements in the specified array. By default the first item in the array (and therefore the data model) becomes selected.- Parameters:
items- an array of objects to insert into the combo box- See Also:
-
JXComboBox
Creates aJXComboBoxthat contains the elements in the specified Vector. By default the first item in the vector (and therefore the data model) becomes selected.- Parameters:
items- an array of vectors to insert into the combo box- See Also:
-
-
Method Details
-
getPopupListFor
- Parameters:
comboBox- JComboBox- Returns:
- JList of Objects
-
createDefaultKeySelectionManager
This implementation uses the
StringValuerepresentation of the elements to determine the selected item.- Overrides:
createDefaultKeySelectionManagerin classJComboBox<E>
-
processKeyBinding
- Overrides:
processKeyBindingin classJComboBox<E>
-
getComponentAdapter
- Returns:
- the unconfigured ComponentAdapter.
-
getComponentAdapter
Convenience to access a configured ComponentAdapter. Note: the column index of the configured adapter is always 0.- Parameters:
index- the row index in view coordinates, must be valid.- Returns:
- the configured ComponentAdapter.
-
getStringValueRegistry
Returns the StringValueRegistry which defines the string representation for each cells. This is strictly for internal use by the table, which has the responsibility to keep in synch with registered renderers.Currently exposed for testing reasons, client code is recommended to not use nor override.
- Returns:
- the current string value registry
-
createDefaultStringValueRegistry
Creates and returns the default registry for StringValues.- Returns:
- the default registry for StringValues.
-
getStringAt
Returns the string representation of the cell value at the given position.- Parameters:
row- the row index of the cell in view coordinates- Returns:
- the string representation of the cell value as it will appear in the table.
-
createDefaultCellRenderer
Creates and returns the default cell renderer to use. Subclasses may override to use a different type. Here: returns aDefaultListRenderer.- Returns:
- the default cell renderer to use with this list.
-
getRenderer
Overridden to return the delegating renderer which is wrapped around the original to support highlighting. The returned renderer is of type DelegatingRenderer and guaranteed to not-null
- Overrides:
getRendererin classJComboBox<E>- See Also:
-
getWrappedRenderer
Returns the renderer installed by client code or the default if none has been set.- Returns:
- the wrapped renderer.
- See Also:
-
setRenderer
Overridden to wrap the given renderer in a DelegatingRenderer to support highlighting.
Note: the wrapping implies that the renderer returned from the getCellRenderer is not the renderer as given here, but the wrapper. To access the original, use
getWrappedCellRenderer.- Overrides:
setRendererin classJComboBox<E>- See Also:
-
isUseHighlightersForCurrentValue
public boolean isUseHighlightersForCurrentValue()PENDING JW to KS: review method naming - doesn't sound like valid English to me (no native speaker of course :-). Options are to change the property name to usingHighlightersForCurrentValue (as we did in JXMonthView after some debate) or stick to getXX. Thinking about it: maybe then the property should be usesHighlightersXX, that is third person singular instead of imperative, like in tracksVerticalViewport of JTable?- Returns:
trueif the combo box decorates the current value with highlighters;falseotherwise
-
setUseHighlightersForCurrentValue
public void setUseHighlightersForCurrentValue(boolean useHighlightersForCurrentValue) - Parameters:
useHighlightersForCurrentValue- boolean
-
setHighlighters
Sets theHighlighters to the column, replacing any old settings. None of the given Highlighters must be null.- Parameters:
highlighters- zero or more not null highlighters to use for renderer decoration.- See Also:
-
getHighlighters
Returns theHighlighters used by this column. Maybe empty, but guarantees to be never null.- Returns:
- the Highlighters used by this column, guaranteed to never null.
- See Also:
-
addHighlighter
Adds a Highlighter. Appends to the end of the list of used Highlighters.- Parameters:
highlighter- theHighlighterto add.- Throws:
NullPointerException- ifHighlighteris null.- See Also:
-
removeHighlighter
Removes the given Highlighter.Does nothing if the Highlighter is not contained.
- Parameters:
highlighter- the Highlighter to remove.- See Also:
-
getHighlighterChangeListener
Returns theChangeListenerto use with highlighters. Lazily creates the listener.- Returns:
- the ChangeListener for observing changes of highlighters, guaranteed to be
not-null
-
createHighlighterChangeListener
Creates and returns the ChangeListener observing Highlighters.A property change event is create for a state change.
- Returns:
- the ChangeListener defining the reaction to changes of highlighters.
-
updateUI
public void updateUI()Overridden to update renderer and highlighters.
-