Class JXRadioGroup<T>

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

    @JavaBean
    public class JXRadioGroup<T>
    extends javax.swing.JPanel

    JXRadioGroup is a group of radio buttons that functions as a unit. It is similar in concept to a JComboBox in functionality, but can offer a better presentation for a small number of choices. JXRadioGroup should be used in preference to JComboBox when the number of choices is small (less than six) or the choices are verbose.

    Notes:

    1. Enabling and disabling the JXRadioGroup will enable/disable all of the child buttons inside the JXRadioGroup.
    2. If the generic type parameter of JXRadioGroup is a subclass of AbstractButton, then the buttons will be added "as is" to the container. If the generic type is anything else, buttons will be created as JRadioButton objects, and the button text will be set by calling toString() on the value object.
    3. Alternatively, if you want to configure the buttons individually, construct the JXRadioGroup normally, and then call getChildButton(int) or getChildButton(Object) and configure the buttons.

    TODO back with a model (possibly reuse of extend ComboBoxModel

    Version:
    1.0
    See Also:
    Serialized Form
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      private class  JXRadioGroup.ActionSelectionListener  
      • Nested classes/interfaces inherited from class javax.swing.JPanel

        javax.swing.JPanel.AccessibleJPanel
      • 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
      private JXRadioGroup.ActionSelectionListener actionHandler  
      private javax.swing.ButtonGroup buttonGroup  
      private static long serialVersionUID  
      private java.util.List<T> values  
      • 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
      JXRadioGroup()
      Create a default JXRadioGroup with a default layout axis of BoxLayout.X_AXIS.
      JXRadioGroup​(T[] radioValues)
      Create a default JXRadioGroup with a default layout axis of BoxLayout.X_AXIS.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void add​(T radioValue)
      You can use this method to manually add your own AbstractButton objects, provided you declared the class as JXRadioGroup<JRadioButton>.
      void addActionListener​(java.awt.event.ActionListener l)
      Adds an ActionListener.
      private void addButton​(javax.swing.AbstractButton button)  
      private void clearAll()  
      static <T> JXRadioGroup<T> create​(T[] radioValues)
      Convenience factory method.
      protected void fireActionEvent​(java.awt.event.ActionEvent e)
      Notifies all listeners that have registered interest for notification on this event type.
      java.awt.event.ActionListener[] getActionListeners()
      Returns an array of all the ActionListeners added to this JRadioGroup with addActionListener().
      private javax.swing.AbstractButton[] getButtonComponents()  
      javax.swing.AbstractButton getChildButton​(int index)
      Retrieve the child button by index.
      javax.swing.AbstractButton getChildButton​(T value)
      Retrieve the child button that represents this value.
      int getChildButtonCount()
      Get the number of child buttons.
      javax.swing.AbstractButton getSelectedButton()
      Gets the currently selected button.
      private int getSelectedIndex()  
      T getSelectedValue()
      The currently selected value.
      void removeActionListener​(java.awt.event.ActionListener l)
      Removes an ActionListener.
      void setEnabled​(boolean enabled)
      Enable/disable all of the child buttons
      void setLayoutAxis​(int axis)
      Set the layout axis of the radio group.
      void setSelectedValue​(T value)
      Selects the supplied value.
      void setValues​(T[] radioValues)
      Sets the values backing this group.
      • Methods inherited from class javax.swing.JPanel

        getAccessibleContext, getUI, getUIClassID, paramString, setUI, 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, 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, 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

      • JXRadioGroup

        public JXRadioGroup()
        Create a default JXRadioGroup with a default layout axis of BoxLayout.X_AXIS.
      • JXRadioGroup

        public JXRadioGroup​(T[] radioValues)
        Create a default JXRadioGroup with a default layout axis of BoxLayout.X_AXIS.
        Parameters:
        radioValues - the list of values used to create the group.
    • Method Detail

      • create

        public static <T> JXRadioGroup<T> create​(T[] radioValues)
        Convenience factory method. Reduces code clutter when dealing with generics.
        Parameters:
        radioValues - the list of values used to create the group.
      • setLayoutAxis

        public void setLayoutAxis​(int axis)
        Set the layout axis of the radio group.
        Parameters:
        axis - values from BoxLayout.
      • setValues

        public void setValues​(T[] radioValues)
        Sets the values backing this group. This replaces the current set of values with the new set.
        Parameters:
        radioValues - the new backing values for this group
      • clearAll

        private void clearAll()
      • add

        public void add​(T radioValue)
        You can use this method to manually add your own AbstractButton objects, provided you declared the class as JXRadioGroup<JRadioButton>.
      • addButton

        private void addButton​(javax.swing.AbstractButton button)
      • getSelectedButton

        public javax.swing.AbstractButton getSelectedButton()
        Gets the currently selected button.
        Returns:
        the currently selected button
        See Also:
        getSelectedValue()
      • getButtonComponents

        private javax.swing.AbstractButton[] getButtonComponents()
      • getSelectedIndex

        private int getSelectedIndex()
      • getSelectedValue

        public T getSelectedValue()
        The currently selected value.
        Returns:
        the current value
      • setSelectedValue

        public void setSelectedValue​(T value)
        Selects the supplied value.
        Parameters:
        value - the value to select
      • getChildButton

        public javax.swing.AbstractButton getChildButton​(int index)
        Retrieve the child button by index.
      • getChildButton

        public javax.swing.AbstractButton getChildButton​(T value)
        Retrieve the child button that represents this value.
      • getChildButtonCount

        public int getChildButtonCount()
        Get the number of child buttons.
      • addActionListener

        public void addActionListener​(java.awt.event.ActionListener l)
        Adds an ActionListener.

        The ActionListener will receive an ActionEvent when a selection has been made.

        Parameters:
        l - the ActionListener that is to be notified
        See Also:
        setSelectedValue(Object)
      • removeActionListener

        public void removeActionListener​(java.awt.event.ActionListener l)
        Removes an ActionListener.
        Parameters:
        l - the ActionListener to remove
      • getActionListeners

        public java.awt.event.ActionListener[] getActionListeners()
        Returns an array of all the ActionListeners added to this JRadioGroup with addActionListener().
        Returns:
        all of the ActionListeners added or an empty array if no listeners have been added
      • fireActionEvent

        protected void fireActionEvent​(java.awt.event.ActionEvent e)
        Notifies all listeners that have registered interest for notification on this event type.
        Parameters:
        e - the event to pass to the listeners
        See Also:
        EventListenerList
      • setEnabled

        public void setEnabled​(boolean enabled)
        Enable/disable all of the child buttons
        Overrides:
        setEnabled in class javax.swing.JComponent
        See Also:
        JComponent.setEnabled(boolean)