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
ExtendsJComboBox
to display a list of beans using aFormat
to render the list items. Also handles keyboard selection when the combo box is not editable. The list of items may include anull
when a selection is not required. When the combo box is editable theFormat
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
-
-
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 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 usingToStringFormat
.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
-
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:
getModel
in classjavax.swing.JComboBox<T>
-
setModel
public void setModel(javax.swing.ComboBoxModel<T> aModel)
- Overrides:
setModel
in classjavax.swing.JComboBox<T>
- Throws:
java.lang.IllegalArgumentException
- ifaModel
is not an instance ofBeanListComboBoxModel
-
setValidator
public void setValidator(Validator<T> validator)
Set the validator for the selected item.
-
getSelectedItem
public T getSelectedItem()
- Overrides:
getSelectedItem
in classjavax.swing.JComboBox<T>
-
selectedItemChanged
protected void selectedItemChanged()
Overridden to fire item state changed for null selection/deselection.- Overrides:
selectedItemChanged
in classjavax.swing.JComboBox<T>
-
getSelectedIndex
public int getSelectedIndex()
Overridden to handle selection of null.- Overrides:
getSelectedIndex
in classjavax.swing.JComboBox<T>
-
setEnabled
public void setEnabled(boolean enabled)
Overridden to enable/disable editor component.- Overrides:
setEnabled
in classjavax.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 interfaceValidatedComponent
-
getValidationMessages
public java.lang.String getValidationMessages()
Description copied from interface:ValidatedComponent
Get the validation result.- Specified by:
getValidationMessages
in interfaceValidatedComponent
- Returns:
- a string describing the validation errors.
-
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 interfaceValidatedComponent
-
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 interfaceValidatedComponent
-
getEditorText
protected java.lang.String getEditorText()
-
getEditorComponent
protected ValidatedTextField getEditorComponent()
-
setKeySelectionManager
protected void setKeySelectionManager(java.text.Format format)
-
-