Class CheckBoxListWithSelectable

  • All Implemented Interfaces:
    java.awt.image.ImageObserver, java.awt.ItemSelectable, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.Accessible, javax.swing.Scrollable

    public class CheckBoxListWithSelectable
    extends javax.swing.JList
    implements java.awt.ItemSelectable
    CheckBoxListWithSelectable is a special JList which uses JCheckBox as the list element. In addition to regular JList feature, it also allows you select any number of elements in the list by selecting the check boxes.

    The element is ListModel should be an instance of Selectable. If you have your own class that represents the element in the list, you can implement Selectable and implements a few very simple methods. If your elements are already in an array or Vector that you pass in to the constructor of JList, we will convert them to DefaultSelectable which implements Selectable interface.

    To select an element, user can mouse click on the check box, or highlight the rows and press SPACE key to toggle the selections.

    To listen to the check box selection change, you can call addItemListener to add an ItemListener.

    Please note, there are two implementations of CheckBoxList. CheckBoxListWithSelectable is one. There is also another one call CheckBoxList. CheckBoxListWithSelectable is actually the old implementation. In 1.9.2, we introduced a new implementation and renamed the old implementation to CheckBoxListWithSelectable. The main difference between the two implementation is at how the selection state is kept. In new implementation, the selection state is kept at a separate ListSelectionModel which you can get using CheckBoxList.getCheckBoxListSelectionModel(). The old implementation kept the selection state at Selectable object in the ListModel.

    See Also:
    Serialized Form
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      protected static class  CheckBoxListWithSelectable.Handler  
      • Nested classes/interfaces inherited from class javax.swing.JList

        javax.swing.JList.AccessibleJList, javax.swing.JList.DropLocation
      • 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 
      Modifier and Type Field Description
      protected CheckBoxListCellRenderer _listCellRenderer  
      static java.lang.String PROPERTY_CHECKBOX_ENABLED  
      static java.lang.String PROPERTY_CLICK_IN_CHECKBOX_ONLY  
      • Fields inherited from class javax.swing.JList

        HORIZONTAL_WRAP, VERTICAL, VERTICAL_WRAP
      • 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
    • Constructor Summary

      Constructors 
      Constructor Description
      CheckBoxListWithSelectable()
      Constructs a CheckBoxList with an empty model.
      CheckBoxListWithSelectable​(java.lang.Object[] listData)
      Constructs a CheckBoxList that displays the elements in the specified Object[].
      CheckBoxListWithSelectable​(java.util.Vector<?> listData)
      Constructs a CheckBoxList that displays the elements in the specified Vector.
      CheckBoxListWithSelectable​(javax.swing.ListModel dataModel)
      Constructs a CheckBoxList that displays the elements in the specified, non-null model.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void addItemListener​(java.awt.event.ItemListener listener)
      Adds a listener to the list that's notified each time a change to the item selection occurs.
      protected CheckBoxListCellRenderer createCellRenderer()
      Creates the cell renderer.
      protected CheckBoxListWithSelectable.Handler createHandler()
      Creates the mouse listener and key listener used by CheckBoxList.
      protected void fireItemStateChanged​(java.awt.event.ItemEvent event)
      Notifies all listeners that have registered interest for notification on this event type.
      javax.swing.ListCellRenderer getActualCellRenderer()  
      javax.swing.ListCellRenderer getCellRenderer()  
      java.awt.event.ItemListener[] getItemListeners()
      Returns an array of all the ItemListeners added to this JList with addItemListener().
      int getNextMatch​(java.lang.String prefix, int startIndex, javax.swing.text.Position.Bias bias)  
      java.lang.Object[] getSelectedObjects()
      Gets the selected objects.
      protected void init()
      Initialize the CheckBoxList.
      boolean isCheckBoxEnabled()
      Gets the value of property checkBoxEnabled.
      boolean isCheckBoxVisible​(int index)
      Checks if check box is visible.
      boolean isClickInCheckBoxOnly()
      Gets the value of property clickInCheckBoxOnly.
      void removeItemListener​(java.awt.event.ItemListener listener)
      Removes a listener from the list that's notified each time a change to the item selection occurs.
      void selectAll()
      Selects all objects in this list except those are disabled.
      void selectNone()
      Deselects all objects in this list except those are disabled.
      void setCheckBoxEnabled​(boolean checkBoxEnabled)
      Sets the value of property checkBoxEnabled.
      void setClickInCheckBoxOnly​(boolean clickInCheckBoxOnly)
      Sets the value of property clickInCheckBoxOnly.
      void setListData​(java.lang.Object[] listData)  
      void setListData​(java.util.Vector listData)  
      void setSelectedObjects​(java.lang.Object[] elements)
      Sets the selected elements.
      void setSelectedObjects​(java.util.Vector<?> objects)
      Sets the selected objects.
      • Methods inherited from class javax.swing.JList

        addListSelectionListener, addSelectionInterval, clearSelection, createSelectionModel, ensureIndexIsVisible, fireSelectionValueChanged, getAccessibleContext, getAnchorSelectionIndex, getCellBounds, getDragEnabled, getDropLocation, getDropMode, getFirstVisibleIndex, getFixedCellHeight, getFixedCellWidth, getLastVisibleIndex, getLayoutOrientation, getLeadSelectionIndex, getListSelectionListeners, getMaxSelectionIndex, getMinSelectionIndex, getModel, getPreferredScrollableViewportSize, getPrototypeCellValue, getScrollableBlockIncrement, getScrollableTracksViewportHeight, getScrollableTracksViewportWidth, getScrollableUnitIncrement, getSelectedIndex, getSelectedIndices, getSelectedValue, getSelectedValues, getSelectedValuesList, getSelectionBackground, getSelectionForeground, getSelectionMode, getSelectionModel, getToolTipText, getUI, getUIClassID, getValueIsAdjusting, getVisibleRowCount, indexToLocation, isSelectedIndex, isSelectionEmpty, locationToIndex, paramString, removeListSelectionListener, removeSelectionInterval, setCellRenderer, setDragEnabled, setDropMode, setFixedCellHeight, setFixedCellWidth, setLayoutOrientation, setModel, setPrototypeCellValue, setSelectedIndex, setSelectedIndices, setSelectedValue, setSelectionBackground, setSelectionForeground, setSelectionInterval, setSelectionMode, setSelectionModel, setUI, setValueIsAdjusting, setVisibleRowCount, 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, 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, processKeyBinding, processKeyEvent, 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, setEnabled, 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

      • CheckBoxListWithSelectable

        public CheckBoxListWithSelectable()
        Constructs a CheckBoxList with an empty model.
      • CheckBoxListWithSelectable

        public CheckBoxListWithSelectable​(java.util.Vector<?> listData)
        Constructs a CheckBoxList that displays the elements in the specified Vector. If the Vector contains elements which is not an instance of Selectable, it will wrap it automatically into DefaultSelectable and add to ListModel.
        Parameters:
        listData - the Vector to be loaded into the data model
      • CheckBoxListWithSelectable

        public CheckBoxListWithSelectable​(java.lang.Object[] listData)
        Constructs a CheckBoxList that displays the elements in the specified Object[]. If the Object array contains elements which is not an instance of Selectable, it will wrap it automatically into DefaultSelectable and add to ListModel.
        Parameters:
        listData - the array of Objects to be loaded into the data model
      • CheckBoxListWithSelectable

        public CheckBoxListWithSelectable​(javax.swing.ListModel dataModel)
        Constructs a CheckBoxList that displays the elements in the specified, non-null model. All CheckBoxList constructors delegate to this one.

        Please note, if you are using this constructor, please make sure all elements in dataModel are instance of Selectable.

        Parameters:
        dataModel - the data model for this list
        Throws:
        java.lang.IllegalArgumentException - if dataModel is null
    • Method Detail

      • init

        protected void init()
        Initialize the CheckBoxList.
      • createCellRenderer

        protected CheckBoxListCellRenderer createCellRenderer()
        Creates the cell renderer.
        Returns:
        the cell renderer.
      • setSelectedObjects

        public void setSelectedObjects​(java.lang.Object[] elements)
        Sets the selected elements.
        Parameters:
        elements - the elements to be selected
      • setSelectedObjects

        public void setSelectedObjects​(java.util.Vector<?> objects)
        Sets the selected objects.
        Parameters:
        objects - the elements to be selected in a Vector.
      • getCellRenderer

        public javax.swing.ListCellRenderer getCellRenderer()
        Overrides:
        getCellRenderer in class javax.swing.JList
      • getActualCellRenderer

        public javax.swing.ListCellRenderer getActualCellRenderer()
      • isClickInCheckBoxOnly

        public boolean isClickInCheckBoxOnly()
        Gets the value of property clickInCheckBoxOnly. If true, user can click on check boxes on each tree node to select and deselect. If false, user can't click but you as developer can programmatically call API to select/deselect it.
        Returns:
        the value of property clickInCheckBoxOnly.
      • setClickInCheckBoxOnly

        public void setClickInCheckBoxOnly​(boolean clickInCheckBoxOnly)
        Sets the value of property clickInCheckBoxOnly.
        Parameters:
        clickInCheckBoxOnly - true to allow to check the check box. False to disable it which means user can see whether a row is checked or not but they cannot change it.
      • addItemListener

        public void addItemListener​(java.awt.event.ItemListener listener)
        Adds a listener to the list that's notified each time a change to the item selection occurs. Listeners added directly to the CheckBoxList will have their ItemEvent.getSource() == this CheckBoxList.
        Specified by:
        addItemListener in interface java.awt.ItemSelectable
        Parameters:
        listener - the ItemListener to add
      • removeItemListener

        public void removeItemListener​(java.awt.event.ItemListener listener)
        Removes a listener from the list that's notified each time a change to the item selection occurs.
        Specified by:
        removeItemListener in interface java.awt.ItemSelectable
        Parameters:
        listener - the ItemListener to remove
      • getItemListeners

        public java.awt.event.ItemListener[] getItemListeners()
        Returns an array of all the ItemListeners added to this JList with addItemListener().
        Returns:
        all of the ItemListeners added or an empty array if no listeners have been added
        See Also:
        addItemListener(java.awt.event.ItemListener)
      • fireItemStateChanged

        protected void fireItemStateChanged​(java.awt.event.ItemEvent event)
        Notifies all listeners that have registered interest for notification on this event type. The event instance is lazily created using the event parameter.
        Parameters:
        event - the ItemEvent object
        See Also:
        EventListenerList
      • getSelectedObjects

        public java.lang.Object[] getSelectedObjects()
        Gets the selected objects. This is different from JList.getSelectedValues() which is a JList's feature. The List returned from this method contains the objects that is checked in the CheckBoxList.
        Specified by:
        getSelectedObjects in interface java.awt.ItemSelectable
        Returns:
        the selected objects.
      • selectAll

        public void selectAll()
        Selects all objects in this list except those are disabled.
      • selectNone

        public void selectNone()
        Deselects all objects in this list except those are disabled.
      • setListData

        public void setListData​(java.util.Vector listData)
        Overrides:
        setListData in class javax.swing.JList
      • setListData

        public void setListData​(java.lang.Object[] listData)
        Overrides:
        setListData in class javax.swing.JList
      • getNextMatch

        public int getNextMatch​(java.lang.String prefix,
                                int startIndex,
                                javax.swing.text.Position.Bias bias)
        Overrides:
        getNextMatch in class javax.swing.JList
      • isCheckBoxEnabled

        public boolean isCheckBoxEnabled()
        Gets the value of property checkBoxEnabled. If true, user can click on check boxes on each tree node to select and deselect. If false, user can't click but you as developer can programmatically call API to select/deselect it.
        Returns:
        the value of property checkBoxEnabled.
      • isCheckBoxVisible

        public boolean isCheckBoxVisible​(int index)
        Checks if check box is visible. There is no setter for it. The only way is to override this method to return true or false.
        Parameters:
        index - the row index.
        Returns:
        true or false. If false, there is not check box on the particular row index.
      • setCheckBoxEnabled

        public void setCheckBoxEnabled​(boolean checkBoxEnabled)
        Sets the value of property checkBoxEnabled.
        Parameters:
        checkBoxEnabled - true to enable all the check boxes. False to disable all of them.