JIDE 3.5.15

com.jidesoft.combobox
Class TableComboBox

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by com.jidesoft.combobox.AbstractComboBox
                  extended by com.jidesoft.combobox.TableComboBox
All Implemented Interfaces:
ConverterContextSupport, AlignmentSupport, ActionListener, FocusListener, MouseListener, ImageObserver, ItemSelectable, MenuContainer, Serializable, EventListener, Accessible, PopupMenuListener

public class TableComboBox
extends AbstractComboBox

TableComboBox is just like a normal JComboBox which you can choose a value from a drop down table.

See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class com.jidesoft.combobox.AbstractComboBox
AbstractComboBox.AccessibleJComboBox, AbstractComboBox.ComboBoxSpinner, AbstractComboBox.ComboBoxTextField, AbstractComboBox.DefaultRendererComponent, AbstractComboBox.DefaultTextFieldEditorComponent, AbstractComboBox.EditorComponent, AbstractComboBox.EnterLazyDelegateAction, AbstractComboBox.LazyDelegateAction, AbstractComboBox.SpinnerEditorComponent
 
Nested classes/interfaces inherited from class javax.swing.JComponent
JComponent.AccessibleJComponent
 
Nested classes/interfaces inherited from class java.awt.Container
Container.AccessibleAWTContainer
 
Nested classes/interfaces inherited from class java.awt.Component
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy
 
Field Summary
protected  int _maximumRowCount
          This protected field is implementation specific.
 
Fields inherited from class com.jidesoft.combobox.AbstractComboBox
_dialog, _editable, _editor, _listDataListener, _oldSelectedItemReminder, _popupButton, _popupPanel, _renderer, actionCommand, CLIENT_PROPERTY_HIDE_POPUP_ON_LIST_DATA_CHANGED, CLIENT_PROPERTY_TABLE_CELL_EDITOR, CLIENT_PROPERTY_TABLE_CELL_RENDERER, COMMIT, COMMIT_OR_RESET, COMMIT_OR_REVERT, dataModel, DIALOG, DROPDOWN, HIDE_POPUP_KEY, PERSIST, PROPERTY_SELECTED_ITEM, RESET, REVERT, 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
TableComboBox()
          Creates a new TableComboBox.
TableComboBox(TableModel model)
          Creates a new TableComboBox.
TableComboBox(TableModel model, Class<?> clazz)
          Creates a new TableComboBox.
TableComboBox(TableModel model, Class<?> clazz, int type)
          Creates a new TableComboBox.
TableComboBox(TableModel model, int type)
          Creates a new TableComboBox.
 
Method Summary
 void addItem(Object anObject)
          Adds an item to the item table.
 AbstractComboBox.EditorComponent createEditorComponent()
          Subclass should implement this method to create the actual editor component.
 PopupPanel createPopupComponent()
          Subclass should implement this method to create the actual popup component.
protected  JTable createTable(TableModel model)
          Creates the table.
protected  TableChooserPanel createTableChooserPanel(TableModel dataModel, Class<?> clazz)
          Creates the TableChooserPanel.
protected  List<KeyStroke> getDelegateKeyStrokes()
          Overrides its super method to remove LEFT/RIGHT/HOME/END key.
protected  JComponent getDelegateTarget()
           
 int getMaximumRowCount()
          Returns the maximum number of items the combo box can display without a scroll bar.
 int getSelectedIndex()
          Returns the first item in the table that matches the given item.
 JTable getTable()
          Gets the underlying JTable.
 TableModel getTableModel()
          Gets the table model used by the table in the popup panel.
 int getValueColumnIndex()
          Returns the value column index.
 void insertItemAt(Object anObject, int index)
          Inserts an item into the item table at a given index.
 void removeAllItems()
          Removes all items from the item table.
 void removeItem(Object anObject)
          Removes an item from the item table.
 void removeItemAt(int anIndex)
          Removes the item at anIndex This method works only if the TableComboBox uses a mutable data model.
 void setMaximumRowCount(int count)
          Sets the maximum number of rows the JComboBox displays.
 void setPopupType(int popupType)
          Sets the popup type.
 void setSelectedIndex(int anIndex)
          Selects the item at index anIndex.
 void setTableModel(TableModel tableModel)
          Sets the table model used by the table in the popup panel.
protected  void setupTable(JTable table)
          Configure the table that is created using createTable(javax.swing.table.TableModel).
 void setValueColumnIndex(int valueColumnIndex)
          Sets the value column index.
 
Methods inherited from class com.jidesoft.combobox.AbstractComboBox
actionPerformed, addActionListener, addItemListener, addNotify, addPopupMenuListener, calculatePopupLocation, comboBoxSelected, commitEdit, commitEditWithFocusLostBehavior, configurePropertiesFromAction, createActionPropertyChangeListener, createButtonComponent, createDefaultButton, createPopupWindow, createPropertyChangeListener, createSpinner, createTextField, customizeButton, customizeDialog, customizeDialogLocation, customizePopup, delegateKeyStrokes, equals, fireActionEvent, fireItemStateChanged, firePopupMenuCanceled, firePopupMenuWillBecomeInvisible, firePopupMenuWillBecomeVisible, focusGained, focusLost, getAccessibleContext, getAction, getActionCommand, getActionListeners, getBackground, getBaseline, getConverter, getConverterContext, getDefaultCancelAction, getDefaultOKAction, getDialogCancelAction, getDialogOKAction, getDisabledBackground, getDisabledForeground, getEditor, getFocusLostBehavior, getForeground, getHorizontalAlignment, getItemListeners, getModel, getPopupButton, getPopupCancelBehavior, getPopupLocation, getPopupMenuListeners, getPopupPanel, getPopupType, getPrototypeDisplayValue, getRenderer, getSelectedItem, getSelectedItemForPopupPanel, getSelectedObjects, getType, getVerticalAlignment, hidePopup, initComponent, initComponent, installColorFontAndBorder, installListener, isButtonOnly, isButtonVisible, isClearSelectionOnListDataChanged, isEditable, isHidePopupOnListDataChanged, isKeepPopupSize, isOpaque, isPopupVisible, isPopupVolatile, isStretchToFit, isToggleValueOnDoubleClick, isUpdateFromPopupOnFly, listDataChanged, modelUpdated, mouseClicked, mouseEntered, mouseExited, mousePressed, mouseReleased, notifyUser, paintComponent, popupMenuCanceled, popupMenuWillBecomeInvisible, popupMenuWillBecomeVisible, processKeyBinding, removeActionListener, removeItemListener, removeNotify, removePopupMenuListener, resetEdit, resetPopup, revertEdit, selectedItemChanged, setAction, setActionCommand, setBackground, setBorder, setButtonOnly, setButtonVisible, setClearSelectionOnListDataChanged, setConverter, setConverterContext, setDisabledBackground, setDisabledForeground, setEditable, setEditor, setEnabled, setFocusLostBehavior, setForeground, setHidePopupOnListDataChanged, setHorizontalAlignment, setKeepPopupSize, setModel, setPopupButton, setPopupCancelBehavior, setPopupVisible, setPopupVolatile, setPrototypeDisplayValue, setRenderer, setSelectedItem, setSelectedItem, setStretchToFit, setToggleValueOnDoubleClick, setType, setVerticalAlignment, showPopup, showPopupPanel, showPopupPanelAsPopup, undelegateKeyStrokes, uninstallListener, updateToolTipTextForChildren, updateUI, validateValueForNonEditable
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, 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, getUIClassID, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintImmediately, paintImmediately, paramString, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setFocusTraversalKeys, setFont, 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, transferFocusBackward, 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, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, 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, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

_maximumRowCount

protected int _maximumRowCount
This protected field is implementation specific. Do not access directly or override. Use the accessor methods instead.

See Also:
getMaximumRowCount(), setMaximumRowCount(int)
Constructor Detail

TableComboBox

public TableComboBox()
Creates a new TableComboBox.


TableComboBox

public TableComboBox(TableModel model)
Creates a new TableComboBox.

Parameters:
model - the table model.

TableComboBox

public TableComboBox(TableModel model,
                     Class<?> clazz)
Creates a new TableComboBox.

Parameters:
model - the table model.
clazz - the type of the item set on the combobox.

TableComboBox

public TableComboBox(TableModel model,
                     int type)
Creates a new TableComboBox.

Parameters:
model - the table model.
type - the type. It could be DROPDOWN or DIALOG as defined in AbstractComboBox.

TableComboBox

public TableComboBox(TableModel model,
                     Class<?> clazz,
                     int type)
Creates a new TableComboBox.

Parameters:
model - the table model.
clazz - the type of the item set on the combobox.
type - the type. It could be DROPDOWN or DIALOG as defined in AbstractComboBox.
Method Detail

createEditorComponent

public AbstractComboBox.EditorComponent createEditorComponent()
Description copied from class: AbstractComboBox
Subclass should implement this method to create the actual editor component.

Specified by:
createEditorComponent in class AbstractComboBox
Returns:
the editor component

createPopupComponent

public PopupPanel createPopupComponent()
Description copied from class: AbstractComboBox
Subclass should implement this method to create the actual popup component.

Specified by:
createPopupComponent in class AbstractComboBox
Returns:
the popup component

setPopupType

public void setPopupType(int popupType)
Description copied from class: AbstractComboBox
Sets the popup type. It could be either DROPDOWN or DIALOG.

Overrides:
setPopupType in class AbstractComboBox
Parameters:
popupType - the new popup type.

getDelegateKeyStrokes

protected List<KeyStroke> getDelegateKeyStrokes()
Overrides its super method to remove LEFT/RIGHT/HOME/END key.

Overrides:
getDelegateKeyStrokes in class AbstractComboBox
Returns:
the keystrokes that will be delegated to the table popup.

createTable

protected JTable createTable(TableModel model)
Creates the table. By default, we will return null, meaning the default JTree created by TreeChooserPanel will be used. Subclass can override this method to create a SortableTable or whatever other types of table.

Parameters:
model - the table model.
Returns:
the table.

setupTable

protected void setupTable(JTable table)
Configure the table that is created using createTable(javax.swing.table.TableModel). We had code to setup the table to the way we want. You can subclass it and do future setup but make sure you call super.setupTable(table) first.

Parameters:
table - the table.

createTableChooserPanel

protected TableChooserPanel createTableChooserPanel(TableModel dataModel,
                                                    Class<?> clazz)
Creates the TableChooserPanel. Subclass can override this method to create its own TableChooserPanel.

Parameters:
dataModel - the data model.
clazz - the class.
Returns:
TableChooserPanel.

setMaximumRowCount

public void setMaximumRowCount(int count)
Sets the maximum number of rows the JComboBox displays. If the number of objects in the model is greater than count, the combo box uses a scroll bar.

Parameters:
count - an integer specifying the maximum number of items to display in the table before using a scroll bar preferred: true description: The maximum number of rows the popup should have

getMaximumRowCount

public int getMaximumRowCount()
Returns the maximum number of items the combo box can display without a scroll bar.

Returns:
an integer specifying the maximum number of items that are displayed in the table before using a scroll bar.

setSelectedIndex

public void setSelectedIndex(int anIndex)
Selects the item at index anIndex.

Parameters:
anIndex - an integer specifying the table item to select, where 0 specifies the first item in the table and -1 indicates no selection
Throws:
IllegalArgumentException - if anIndex < -1 or anIndex is greater than or equal to size description: The item at index is selected.

getSelectedIndex

public int getSelectedIndex()
Returns the first item in the table that matches the given item. The result is not always defined if the JComboBox allows selected items that are not in the table. Returns -1 if there is no selected item or if the user specified an item which is not in the table.

Returns:
an integer specifying the currently selected table item, where 0 specifies the first item in the table; or -1 if no item is selected or if the currently selected item is not in the table

getTable

public JTable getTable()
Gets the underlying JTable. It will return a not null value only when the table has ever been displayed. If you want to customize the table, it's better to override createTableChooserPanel(javax.swing.table.TableModel,Class) method and create your own TableChooserPanel and JTable.

If you want to programmatically set selected index on the table, you can use this method. However do not keep the returned value and use it later because combobox may create a new JTable if the popup is volatile.

Please note, this method will show the popup automatically. Otherwise, the JTable is not even created.

Returns:
table

getDelegateTarget

protected JComponent getDelegateTarget()
Overrides:
getDelegateTarget in class AbstractComboBox

addItem

public void addItem(Object anObject)
Adds an item to the item table. This method works only if the TableComboBox uses a mutable data model.

Warning: Focus and keyboard navigation problems may arise if you add duplicate String objects. A workaround is to add new objects instead of String objects and make sure that the toString() method is defined. For example:

   comboBox.addItem(makeObj("Item 1"));
   comboBox.addItem(makeObj("Item 1"));
   ...
   private Object makeObj(final String item)  {
     return new Object() { public String toString() { return item; } };
   }
 

Parameters:
anObject - the Object to add to the table
See Also:
MutableComboBoxModel, insertItemAt(Object, int)

insertItemAt

public void insertItemAt(Object anObject,
                         int index)
Inserts an item into the item table at a given index. This method works only if the TableComboBox uses a mutable data model.

Parameters:
anObject - the Object to add to the table
index - an integer specifying the position at which to add the item
See Also:
MutableComboBoxModel

removeItem

public void removeItem(Object anObject)
Removes an item from the item table. This method works only if the TableComboBox uses a mutable data model.

Parameters:
anObject - the object to remove from the item table
See Also:
MutableComboBoxModel, removeItemAt(int), removeAllItems()

removeItemAt

public void removeItemAt(int anIndex)
Removes the item at anIndex This method works only if the TableComboBox uses a mutable data model.

Parameters:
anIndex - an int specifying the index of the item to remove, where 0 indicates the first item in the table
See Also:
MutableComboBoxModel

removeAllItems

public void removeAllItems()
Removes all items from the item table.


setValueColumnIndex

public void setValueColumnIndex(int valueColumnIndex)
Sets the value column index. This value column index will be used to get the value from the table model and be displayed at the editor part of the table combobox.

Parameters:
valueColumnIndex - the new value column index.

getValueColumnIndex

public int getValueColumnIndex()
Returns the value column index. This value column index will be used to get the value from the table model and be displayed at the editor part of the table combobox.

Returns:
value column index.

getTableModel

public TableModel getTableModel()
Gets the table model used by the table in the popup panel.

Returns:
the table model used by the table in the popup panel.

setTableModel

public void setTableModel(TableModel tableModel)
Sets the table model used by the table in the popup panel.

Parameters:
tableModel - the table model

JIDE 3.5.15