Class BeanListComboBox<T>

  • Type Parameters:
    T - list item class
    All Implemented Interfaces:
    ValidatedComponent, 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
    Direct Known Subclasses:
    SuggestField

    public class BeanListComboBox<T>
    extends javax.swing.JComboBox<T>
    implements ValidatedComponent
    Extends JComboBox to display a list of beans using a Format to render the list items. Also handles keyboard selection when the combo box is not editable. The list of items may include a null when a selection is not required. When the combo box is editable the Format should also support parsing the input text to create a new bean.
    See Also:
    BeanListComboBoxEditor, Serialized Form
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      static class  BeanListComboBox.Builder<T>  
      • 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

        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

        accessibleContext, 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
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void addValidationListener​(java.beans.PropertyChangeListener listener)
      Add a listener to receive notification when the validation changes.
      static <T extends java.lang.Enum<T>>
      BeanListComboBox.Builder<T>
      builder​(java.lang.Class<T> enumClass)
      Create a builder for a combo box that displays enum values.
      static <T> BeanListComboBox.Builder<T> builder​(java.text.Format format)  
      static <T> BeanListComboBox.Builder<T> builder​(java.text.Format format, LazyLoadComboBoxModel<T> model)  
      static <T> BeanListComboBox.Builder<T> builder​(java.text.Format format, java.util.Collection<T> items)  
      static <T> BeanListComboBox.Builder<T> builder​(java.util.Collection<T> items)
      Create a builder using ToStringFormat.
      protected ValidatedTextField getEditorComponent()  
      protected java.lang.String getEditorText()  
      LazyLoadComboBoxModel<T> getModel()  
      int getSelectedIndex()
      Overridden to handle selection of null.
      T getSelectedItem()  
      java.lang.String getValidationMessages()
      Get the validation result.
      void removeValidationListener​(java.beans.PropertyChangeListener listener)
      Remove a listener that is receiving notification when the validation changes.
      protected void selectedItemChanged()
      Overridden to fire item state changed for null selection/deselection.
      void setEnabled​(boolean enabled)
      Overridden to enable/disable editor component.
      protected void setKeySelectionManager​(java.text.Format format)  
      void setModel​(javax.swing.ComboBoxModel<T> aModel)  
      void setValidator​(Validator<T> validator)
      Set the validator for the selected item.
      void validateValue()
      Perform validation of the current value.
      • 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, getPopupMenuListeners, getPrototypeDisplayValue, getRenderer, getSelectedObjects, getUI, getUIClassID, hidePopup, insertItemAt, installAncestorListener, intervalAdded, intervalRemoved, isEditable, isLightWeightPopupEnabled, isPopupVisible, paramString, processKeyBinding, processKeyEvent, removeActionListener, removeAllItems, removeItem, removeItemAt, removeItemListener, removePopupMenuListener, selectWithKeyChar, setAction, setActionCommand, setEditable, setEditor, setKeySelectionManager, setLightWeightPopupEnabled, setMaximumRowCount, setPopupVisible, setPrototypeDisplayValue, setRenderer, setSelectedIndex, setSelectedItem, setUI, showPopup, updateUI
      • 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, 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, 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, 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
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Constructor Detail

      • BeanListComboBox

        public BeanListComboBox​(java.text.Format format)
        Create a non-editable combo box.
        Parameters:
        format - display format for the items
      • BeanListComboBox

        public BeanListComboBox​(java.text.Format format,
                                java.text.Format itemFormat,
                                Validator<java.lang.String> validator,
                                LazyLoadComboBoxModel<T> model)
        Create an editable combo box.
        Parameters:
        format - display format for the popup items
        itemFormat - display format for the selected item
        validator - validator for new items (applied to the editor value)
        model - the model containing the list of items
    • Method Detail

      • builder

        public static <T> BeanListComboBox.Builder<T> builder​(java.text.Format format)
        Type Parameters:
        T - item type
        Parameters:
        format - display format for the items
      • builder

        public static <T extends java.lang.Enum<T>> BeanListComboBox.Builder<T> builder​(java.lang.Class<T> enumClass)
        Create a builder for a combo box that displays enum values.
      • builder

        public static <T> BeanListComboBox.Builder<T> builder​(java.text.Format format,
                                                              java.util.Collection<T> items)
        Parameters:
        format - display format for the items
        items - the combo box items
      • builder

        public static <T> BeanListComboBox.Builder<T> builder​(java.text.Format format,
                                                              LazyLoadComboBoxModel<T> model)
        Parameters:
        format - display format for the items
        model - the model containing the list of items
      • setModel

        public void setModel​(javax.swing.ComboBoxModel<T> aModel)
        Overrides:
        setModel in class javax.swing.JComboBox<T>
        Throws:
        java.lang.IllegalArgumentException - if aModel is not an instance of BeanListComboBoxModel
      • setValidator

        public void setValidator​(Validator<T> validator)
        Set the validator for the selected item.
      • getSelectedItem

        public T getSelectedItem()
        Overrides:
        getSelectedItem in class javax.swing.JComboBox<T>
      • selectedItemChanged

        protected void selectedItemChanged()
        Overridden to fire item state changed for null selection/deselection.
        Overrides:
        selectedItemChanged in class javax.swing.JComboBox<T>
      • getSelectedIndex

        public int getSelectedIndex()
        Overridden to handle selection of null.
        Overrides:
        getSelectedIndex in class javax.swing.JComboBox<T>
      • setEnabled

        public void setEnabled​(boolean enabled)
        Overridden to enable/disable editor component.
        Overrides:
        setEnabled in class javax.swing.JComboBox<T>
      • validateValue

        public void validateValue()
        Description copied from interface: ValidatedComponent
        Perform validation of the current value. Useful when validation depends on another component.
        Specified by:
        validateValue in interface ValidatedComponent
      • addValidationListener

        public void addValidationListener​(java.beans.PropertyChangeListener listener)
        Description copied from interface: ValidatedComponent
        Add a listener to receive notification when the validation changes.
        Specified by:
        addValidationListener in interface ValidatedComponent
      • removeValidationListener

        public void removeValidationListener​(java.beans.PropertyChangeListener listener)
        Description copied from interface: ValidatedComponent
        Remove a listener that is receiving notification when the validation changes.
        Specified by:
        removeValidationListener in interface ValidatedComponent
      • getEditorText

        protected java.lang.String getEditorText()
      • setKeySelectionManager

        protected void setKeySelectionManager​(java.text.Format format)