org.jdesktop.swingx
Class JXComboBox

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by javax.swing.JComboBox
                  extended by org.jdesktop.swingx.JXComboBox
All Implemented Interfaces:
java.awt.event.ActionListener, java.awt.image.ImageObserver, java.awt.ItemSelectable, java.awt.MenuContainer, java.io.Serializable, java.util.EventListener, javax.accessibility.Accessible, javax.swing.event.ListDataListener

public class JXComboBox
extends javax.swing.JComboBox

An enhanced 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:
Serialized Form

Nested Class Summary
protected static class JXComboBox.ComboBoxAdapter
           
 class JXComboBox.DelegatingRenderer
          A decorator for the original ListCellRenderer.
 
Nested classes/interfaces inherited from class javax.swing.JComboBox
javax.swing.JComboBox.AccessibleJComboBox, javax.swing.JComboBox.KeySelectionManager
 
Nested classes/interfaces inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
 
Nested classes/interfaces inherited from class java.awt.Container
java.awt.Container.AccessibleAWTContainer
 
Nested classes/interfaces inherited from class java.awt.Component
java.awt.Component.AccessibleAWTComponent, java.awt.Component.BaselineResizeBehavior, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
 
Field Summary
 
Fields inherited from class javax.swing.JComboBox
actionCommand, dataModel, editor, isEditable, keySelectionManager, lightWeightPopupEnabled, maximumRowCount, renderer, selectedItemReminder
 
Fields inherited from class javax.swing.JComponent
accessibleContext, listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
 
Fields inherited from class java.awt.Component
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
JXComboBox()
          Creates a JXComboBox with a default data model.
JXComboBox(javax.swing.ComboBoxModel model)
          Creates a JXComboBox that takes its items from an existing ComboBoxModel.
JXComboBox(java.lang.Object[] items)
          Creates a JXComboBox that contains the elements in the specified array.
JXComboBox(java.util.Vector<?> items)
          Creates a JXComboBox that contains the elements in the specified Vector.
 
Method Summary
 void addHighlighter(Highlighter highlighter)
          Adds a Highlighter.
protected  javax.swing.ListCellRenderer createDefaultCellRenderer()
          Creates and returns the default cell renderer to use.
protected  javax.swing.event.ChangeListener createHighlighterChangeListener()
          Creates and returns the ChangeListener observing Highlighters.
protected  ComponentAdapter getComponentAdapter()
           
protected  ComponentAdapter getComponentAdapter(int index)
          Convenience to access a configured ComponentAdapter.
protected  javax.swing.event.ChangeListener getHighlighterChangeListener()
          Returns the ChangeListener to use with highlighters.
 Highlighter[] getHighlighters()
          Returns the Highlighters used by this column.
protected static javax.swing.JList getPopupListFor(javax.swing.JComboBox comboBox)
           
 javax.swing.ListCellRenderer getRenderer()
          
 javax.swing.ListCellRenderer getWrappedRenderer()
          Returns the renderer installed by client code or the default if none has been set.
 boolean isUseHighlightersForCurrentValue()
           
protected  boolean processKeyBinding(javax.swing.KeyStroke ks, java.awt.event.KeyEvent e, int condition, boolean pressed)
          
 void removeHighlighter(Highlighter highlighter)
          Removes the given Highlighter.
 void setHighlighters(Highlighter... highlighters)
          Sets the Highlighters to the column, replacing any old settings.
 void setRenderer(javax.swing.ListCellRenderer renderer)
          
 void setUseHighlightersForCurrentValue(boolean useHighlightersForCurrentValue)
           
 void updateUI()
          
 
Methods inherited from class javax.swing.JComboBox
actionPerformed, actionPropertyChanged, addActionListener, addItem, addItemListener, addPopupMenuListener, configureEditor, configurePropertiesFromAction, contentsChanged, createActionPropertyChangeListener, createDefaultKeySelectionManager, 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, showPopup
 
Methods 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, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, 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, update
 
Methods 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, validateTree
 
Methods 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, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, hide, 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, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

JXComboBox

public JXComboBox()
Creates a JXComboBox with a default data model. The default data model is an empty list of objects. Use addItem to add items. By default the first item in the data model becomes selected.

See Also:
DefaultComboBoxModel

JXComboBox

public JXComboBox(javax.swing.ComboBoxModel model)
Creates a JXComboBox that takes its items from an existing ComboBoxModel. Since the ComboBoxModel is 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 - the ComboBoxModel that provides the displayed list of items
See Also:
DefaultComboBoxModel

JXComboBox

public JXComboBox(java.lang.Object[] items)
Creates a JXComboBox that 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:
DefaultComboBoxModel

JXComboBox

public JXComboBox(java.util.Vector<?> items)
Creates a JXComboBox that 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:
DefaultComboBoxModel
Method Detail

getPopupListFor

protected static javax.swing.JList getPopupListFor(javax.swing.JComboBox comboBox)

processKeyBinding

protected boolean processKeyBinding(javax.swing.KeyStroke ks,
                                    java.awt.event.KeyEvent e,
                                    int condition,
                                    boolean pressed)

Overrides:
processKeyBinding in class javax.swing.JComponent

getComponentAdapter

protected ComponentAdapter getComponentAdapter()
Returns:
the unconfigured ComponentAdapter.

getComponentAdapter

protected ComponentAdapter getComponentAdapter(int index)
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.

createDefaultCellRenderer

protected javax.swing.ListCellRenderer createDefaultCellRenderer()
Creates and returns the default cell renderer to use. Subclasses may override to use a different type. Here: returns a DefaultListRenderer.

Returns:
the default cell renderer to use with this list.

getRenderer

public javax.swing.ListCellRenderer 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:
getRenderer in class javax.swing.JComboBox
See Also:
setRenderer(ListCellRenderer), JXComboBox.DelegatingRenderer

getWrappedRenderer

public javax.swing.ListCellRenderer getWrappedRenderer()
Returns the renderer installed by client code or the default if none has been set.

Returns:
the wrapped renderer.
See Also:
#setCellRenderer(TreeCellRenderer)

setRenderer

public void setRenderer(javax.swing.ListCellRenderer renderer)

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:
setRenderer in class javax.swing.JComboBox
See Also:
#getWrappedCellRenderer(), #getCellRenderer()

isUseHighlightersForCurrentValue

public boolean isUseHighlightersForCurrentValue()

setUseHighlightersForCurrentValue

public void setUseHighlightersForCurrentValue(boolean useHighlightersForCurrentValue)

setHighlighters

public void setHighlighters(Highlighter... highlighters)
Sets the Highlighters 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(), addHighlighter(Highlighter), removeHighlighter(Highlighter)

getHighlighters

public Highlighter[] getHighlighters()
Returns the Highlighters 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:
setHighlighters(Highlighter[])

addHighlighter

public void addHighlighter(Highlighter highlighter)
Adds a Highlighter. Appends to the end of the list of used Highlighters.

Parameters:
highlighter - the Highlighter to add.
Throws:
java.lang.NullPointerException - if Highlighter is null.
See Also:
removeHighlighter(Highlighter), setHighlighters(Highlighter[])

removeHighlighter

public void removeHighlighter(Highlighter highlighter)
Removes the given Highlighter.

Does nothing if the Highlighter is not contained.

Parameters:
highlighter - the Highlighter to remove.
See Also:
addHighlighter(Highlighter), setHighlighters(Highlighter...)

getHighlighterChangeListener

protected javax.swing.event.ChangeListener getHighlighterChangeListener()
Returns the ChangeListener to use with highlighters. Lazily creates the listener.

Returns:
the ChangeListener for observing changes of highlighters, guaranteed to be not-null

createHighlighterChangeListener

protected javax.swing.event.ChangeListener 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.

Overrides:
updateUI in class javax.swing.JComboBox


Copyright © 2011. All Rights Reserved.