Class BeanListComboBox<T>
- java.lang.Object
-
- java.awt.Component
-
- java.awt.Container
-
- javax.swing.JComponent
-
- javax.swing.JComboBox<T>
-
- io.github.jonestimd.swing.component.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
ExtendsJComboBoxto display a list of beans using aFormatto render the list items. Also handles keyboard selection when the combo box is not editable. The list of items may include anullwhen a selection is not required. When the combo box is editable theFormatshould 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 classBeanListComboBox.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
-
-
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
-
Fields inherited from interface io.github.jonestimd.swing.validation.ValidatedComponent
VALIDATION_MESSAGES
-
-
Constructor Summary
Constructors Constructor Description BeanListComboBox(java.text.Format format)Create a non-editable combo box.BeanListComboBox(java.text.Format format, LazyLoadComboBoxModel<T> model)BeanListComboBox(java.text.Format format, java.text.Format itemFormat, Validator<java.lang.String> validator, LazyLoadComboBoxModel<T> model)Create an editable combo box.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddValidationListener(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 usingToStringFormat.protected ValidatedTextFieldgetEditorComponent()protected java.lang.StringgetEditorText()LazyLoadComboBoxModel<T>getModel()intgetSelectedIndex()Overridden to handle selection of null.TgetSelectedItem()java.lang.StringgetValidationMessages()Get the validation result.voidremoveValidationListener(java.beans.PropertyChangeListener listener)Remove a listener that is receiving notification when the validation changes.protected voidselectedItemChanged()Overridden to fire item state changed for null selection/deselection.voidsetEnabled(boolean enabled)Overridden to enable/disable editor component.protected voidsetKeySelectionManager(java.text.Format format)voidsetModel(javax.swing.ComboBoxModel<T> aModel)voidsetValidator(Validator<T> validator)Set the validator for the selected item.voidvalidateValue()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
-
Methods inherited from interface io.github.jonestimd.swing.validation.ValidatedComponent
isVisible
-
-
-
-
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 itemsitemFormat- display format for the selected itemvalidator- validator for new items (applied to the editor value)model- the model containing the list of items
-
BeanListComboBox
public BeanListComboBox(java.text.Format format, LazyLoadComboBoxModel<T> model)
-
-
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.util.Collection<T> items)
Create a builder usingToStringFormat.
-
builder
public static <T> BeanListComboBox.Builder<T> builder(java.text.Format format, java.util.Collection<T> items)
- Parameters:
format- display format for the itemsitems- 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 itemsmodel- the model containing the list of items
-
getModel
public LazyLoadComboBoxModel<T> getModel()
- Overrides:
getModelin classjavax.swing.JComboBox<T>
-
setModel
public void setModel(javax.swing.ComboBoxModel<T> aModel)
- Overrides:
setModelin classjavax.swing.JComboBox<T>- Throws:
java.lang.IllegalArgumentException- ifaModelis not an instance ofBeanListComboBoxModel
-
setValidator
public void setValidator(Validator<T> validator)
Set the validator for the selected item.
-
getSelectedItem
public T getSelectedItem()
- Overrides:
getSelectedItemin classjavax.swing.JComboBox<T>
-
selectedItemChanged
protected void selectedItemChanged()
Overridden to fire item state changed for null selection/deselection.- Overrides:
selectedItemChangedin classjavax.swing.JComboBox<T>
-
getSelectedIndex
public int getSelectedIndex()
Overridden to handle selection of null.- Overrides:
getSelectedIndexin classjavax.swing.JComboBox<T>
-
setEnabled
public void setEnabled(boolean enabled)
Overridden to enable/disable editor component.- Overrides:
setEnabledin classjavax.swing.JComboBox<T>
-
validateValue
public void validateValue()
Description copied from interface:ValidatedComponentPerform validation of the current value. Useful when validation depends on another component.- Specified by:
validateValuein interfaceValidatedComponent
-
getValidationMessages
public java.lang.String getValidationMessages()
Description copied from interface:ValidatedComponentGet the validation result.- Specified by:
getValidationMessagesin interfaceValidatedComponent- Returns:
- a string describing the validation errors.
-
addValidationListener
public void addValidationListener(java.beans.PropertyChangeListener listener)
Description copied from interface:ValidatedComponentAdd a listener to receive notification when the validation changes.- Specified by:
addValidationListenerin interfaceValidatedComponent
-
removeValidationListener
public void removeValidationListener(java.beans.PropertyChangeListener listener)
Description copied from interface:ValidatedComponentRemove a listener that is receiving notification when the validation changes.- Specified by:
removeValidationListenerin interfaceValidatedComponent
-
getEditorText
protected java.lang.String getEditorText()
-
getEditorComponent
protected ValidatedTextField getEditorComponent()
-
setKeySelectionManager
protected void setKeySelectionManager(java.text.Format format)
-
-