Package org.zkoss.zul

## Class Radiogroup

- java.lang.Object
- - org.zkoss.zk.ui.AbstractComponent
  - - org.zkoss.zk.ui.HtmlBasedComponent
    - - org.zkoss.zul.impl.XulElement
      - - org.zkoss.zul.Radiogroup

- All Implemented Interfaces:
    `java.io.Serializable`, `java.lang.Cloneable`, `Component`, `Disable`, `Scope`, `ComponentCtrl`

      public class Radiogroup
      extends XulElement
      implements Disable

  A radio group.

  Note: To support the versatile layout, a radio group accepts any kind of children, including `Radio`. On the other hand, the parent of a radio, if any, must be a radio group.

  Author:
    tomyeh
  See Also:
    Serialized Form

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from class org.zkoss.zk.ui.HtmlBasedComponent

      `HtmlBasedComponent.ExtraCtrl`

    - ### Nested classes/interfaces inherited from class org.zkoss.zk.ui.AbstractComponent

      `AbstractComponent.Children, AbstractComponent.ForwardInfo, AbstractComponent.TargetInfo`

  - ### Field Summary

    - ### Fields inherited from class org.zkoss.zk.ui.HtmlBasedComponent

      `_zclass`

    - ### Fields inherited from interface org.zkoss.zk.ui.Component

      `APPLICATION_SCOPE, COMPONENT_SCOPE, DESKTOP_SCOPE, PAGE_SCOPE, REQUEST_SCOPE, SESSION_SCOPE, SPACE_SCOPE`

    - ### Fields inherited from interface org.zkoss.zk.ui.sys.ComponentCtrl

      `AFTER_CHILD_ADDED, AFTER_CHILD_REMOVED, AFTER_CLONED, AFTER_PAGE_ATTACHED, AFTER_PAGE_DETACHED, AFTER_PARENT_CHANGED, CE_BUSY_IGNORE, CE_DUPLICATE_IGNORE, CE_IMPORTANT, CE_NON_DEFERRABLE, CE_REPEAT_IGNORE`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `Radiogroup()` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `Radio` | `appendItem​(java.lang.String label, java.lang.String value)` | Appends a radio button.
    `java.lang.Object` | `clone()` | Clones the component.
    `Radio` | `getItemAtIndex​(int index)` | Returns the radio button at the specified index.
    `int` | `getItemCount()` | Returns the number of radio buttons in this group.
    `java.util.List<Radio>` | `getItems()` | Returns a readonly list of `Radio`.
    `<T> ListModel<T>` | `getModel()` | Returns the list model associated with this radiogroup, or null if this radiogroup is not associated with any list data model.
    `java.lang.String` | `getName()` | Returns the name of this group of radio buttons.
    `java.lang.String` | `getOrient()` | Returns the orient.
    `<T> RadioRenderer<T>` | `getRadioRenderer()` | Returns the renderer to render each radio, or null if the default renderer is used.
    `int` | `getSelectedIndex()` | Returns the index of the selected radio button (-1 if no one is selected).
    `Radio` | `getSelectedItem()` | Returns the selected radio button.
    `boolean` | `isDisabled()` | Returns whether it is disabled.
    `void` | `onChildAdded​(Component child)` | Default: handles special event listeners.
    `void` | `onInitRender​(Event data)` | For model rendering
    `void` | `onPageAttached​(Page newpage, Page oldpage)` | Default: handles special event listeners.
    `void` | `onPageDetached​(Page page)` | Default: handles special event listeners.
    `Radio` | `removeItemAt​(int index)` | Removes the child radio button in the radio group at the given index.
    `protected void` | `renderProperties​(ContentRenderer renderer)` | Renders the content of this component, excluding the enclosing tags and children.
    `void` | `service​(AuRequest request, boolean everError)` | Processes an AU request.
    `void` | `setDisabled​(boolean disabled)` | Sets whether the radiogroup is disabled.
    `void` | `setModel​(ListModel<?> model)` | Sets the list model associated with this radiogroup.
    `void` | `setName​(java.lang.String name)` | Sets the name of this group of radio buttons.
    `void` | `setOrient​(java.lang.String orient)` | Sets the orient.
    `void` | `setRadioRenderer​(java.lang.String clsnm)` | Sets the renderer by use of a class name.
    `void` | `setRadioRenderer​(RadioRenderer<?> renderer)` | Sets the renderer which is used to render each row if `getModel()` is not null.
    `void` | `setSelectedIndex​(int jsel)` | Deselects all of the currently selected radio button and selects the radio button with the given index.
    `void` | `setSelectedItem​(Radio item)` | Deselects all of the currently selected radio buttons and selects the given radio button.

    - ### Methods inherited from class org.zkoss.zul.impl.XulElement

      `getContext, getCtrlKeys, getPopup, getPropertyAccess, getTooltip, setContext, setContext, setContextAttributes, setCtrlKeys, setPopup, setPopup, setPopupAttributes, setTooltip, setTooltip, setTooltipAttributes`

    - ### Methods inherited from class org.zkoss.zk.ui.HtmlBasedComponent

      `addSclass, evalCSSFlex, focus, getAction, getClientAction, getDraggable, getDroppable, getExtraCtrl, getHeight, getHflex, getLeft, getRenderdefer, getSclass, getStyle, getTabindex, getTabindexInteger, getTooltiptext, getTop, getVflex, getWidth, getZclass, getZindex, getZIndex, removeSclass, removeSclass, setAction, setClass, setClientAction, setDraggable, setDroppable, setFocus, setHeight, setHeight0, setHeightDirectly, setHflex, setHflex0, setHflexDirectly, setLeft, setLeftDirectly, setRenderdefer, setSclass, setStyle, setTabindex, setTabindex, setTooltiptext, setTop, setTopDirectly, setVflex, setVflex0, setVflexDirectly, setWidth, setWidth0, setWidthDirectly, setZclass, setZindex, setZIndex, setZIndexDirectly`

    - ### Methods inherited from class org.zkoss.zk.ui.AbstractComponent

      `addAnnotation, addCallback, addClientEvent, addEventHandler, addEventListener, addEventListener, addForward, addForward, addForward, addForward, addMoved, addRedrawCallback, addScopeListener, addShadowRoot, addShadowRootBefore, addSharedEventHandlerMap, appendChild, applyProperties, beforeChildAdded, beforeChildRemoved, beforeParentChanged, destroyIndexCacheMap, detach, didActivate, didActivate, didDeserialize, didDeserialize, disableBindingAnnotation, disableClientUpdate, disableHostChanged, enableBindingAnnotation, enableHostChanged, getAnnotatedProperties, getAnnotatedPropertiesBy, getAnnotation, getAnnotations, getAnnotations, getAttribute, getAttribute, getAttribute, getAttributeOrFellow, getAttributes, getAttributes, getAuService, getAutag, getCallback, getChildren, getClientAttribute, getClientDataAttribute, getClientEvents, getDefaultMold, getDefinition, getDesktop, getEventHandler, getEventHandlerNames, getEventListenerMap, getEventListeners, getFellow, getFellow, getFellowIfAny, getFellowIfAny, getFellows, getFirstChild, getForwards, getId, getIndexCacheMap, getLastChild, getMold, getNextSibling, getPage, getParent, getPreviousSibling, getRedrawCallback, getRoot, getShadowFellowIfAny, getShadowRoots, getShadowVariable, getShadowVariable, getShadowVariable0, getSpaceOwner, getSpecialRendererOutput, getStubonly, getSubBindingAnnotationCount, getTemplate, getTemplateNames, getUuid, getWidgetAttributeNames, getWidgetClass, getWidgetListener, getWidgetListenerNames, getWidgetOverride, getWidgetOverrideNames, hasAttribute, hasAttribute, hasAttribute, hasAttributeOrFellow, hasBindingAnnotation, hasFellow, hasFellow, hasSubBindingAnnotation, initIndexCacheMap, insertBefore, invalidate, isChildable, isDisabledHostChanged, isInitialized, isInvalidated, isListenerAvailable, isVisible, onChildRemoved, onParentChanged, onWrongValue, query, queryAll, redraw, redrawChildren, removeAttribute, removeAttribute, removeAttribute, removeCallback, removeChild, removeEventListener, removeForward, removeForward, removeRedrawCallback, removeScopeListener, removeShadowRoot, render, render, render, renderPropertiesOnly, replace, response, response, response, service, sessionDidActivate, sessionWillPassivate, setAttribute, setAttribute, setAttribute, setAuService, setAutag, setClientAttribute, setClientDataAttribute, setDefinition, setDefinition, setId, setMold, setPage, setPageBefore, setParent, setStubonly, setStubonly, setSubBindingAnnotationCount, setTemplate, setVisible, setVisibleDirectly, setWidgetClass, setWidgetListener, setWidgetOverride, smartUpdate, smartUpdate, smartUpdate, smartUpdate, smartUpdate, smartUpdate, smartUpdate, smartUpdate, smartUpdate, smartUpdateWidgetListener, smartUpdateWidgetOverride, toString, updateByClient, updateSubBindingAnnotationCount, willPassivate, willPassivate, willSerialize, willSerialize`

    - ### Methods inherited from class java.lang.Object

      `equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Constructor Detail

    - #### Radiogroup

          public Radiogroup()

  - ### Method Detail

    - #### getOrient

          public java.lang.String getOrient()

      Returns the orient.

      Default: "horizontal".

    - #### setOrient

          public void setOrient​(java.lang.String orient)
                         throws WrongValueException

      Sets the orient.
      Parameters:
        `orient` - either "horizontal" or "vertical".
      Throws:
        `WrongValueException`

    - #### getItems

          public java.util.List<Radio> getItems()

      Returns a readonly list of `Radio`. Note: any update to the list won't affect the state of this radio group.
      Since:
        5.0.4

    - #### getItemAtIndex

          public Radio getItemAtIndex​(int index)

      Returns the radio button at the specified index.

    - #### getItemCount

          public int getItemCount()

      Returns the number of radio buttons in this group.

    - #### getSelectedIndex

          public int getSelectedIndex()

      Returns the index of the selected radio button (-1 if no one is selected). Note: The index of the external radio button could be unintuitive since radio group always count descendant radio before external radio.

    - #### setSelectedIndex

          public void setSelectedIndex​(int jsel)

      Deselects all of the currently selected radio button and selects the radio button with the given index.

    - #### getSelectedItem

          public Radio getSelectedItem()

      Returns the selected radio button.

    - #### setSelectedItem

          public void setSelectedItem​(Radio item)

      Deselects all of the currently selected radio buttons and selects the given radio button.

    - #### appendItem

          public Radio appendItem​(java.lang.String label,
                                  java.lang.String value)

      Appends a radio button.

    - #### removeItemAt

          public Radio removeItemAt​(int index)

      Removes the child radio button in the radio group at the given index.
      Returns:
        the removed radio button.

    - #### getName

          public java.lang.String getName()

      Returns the name of this group of radio buttons. All child radio buttons shared the same name (`Radio.getName()`).

      Default: automatically generated a unique name

      Don't use this method if your application is purely based on ZK's event-driven model.

    - #### setName

          public void setName​(java.lang.String name)

      Sets the name of this group of radio buttons. All child radio buttons shared the same name (`Radio.getName()`).

      Don't use this method if your application is purely based on ZK's event-driven model.

    - #### isDisabled

          public boolean isDisabled()

      Returns whether it is disabled.

      Default: false.

      Specified by:
        `isDisabled` in interface `Disable`
      Since:
        9.6.0

    - #### setDisabled

          public void setDisabled​(boolean disabled)

      Sets whether the radiogroup is disabled. All the radios belong to this radiogroup will be set to disabled or not disabled as well. Notice: Once a radio is added to a disabled radiogroup (including external radio), the radio will be set to disabled too.
      Specified by:
        `setDisabled` in interface `Disable`
      Parameters:
        `disabled` - whether the radiogroup is disabled
      Since:
        9.6.0

    - #### renderProperties

          protected void renderProperties​(ContentRenderer renderer)
                                   throws java.io.IOException

      Description copied from class: `HtmlBasedComponent`
      Renders the content of this component, excluding the enclosing tags and children.

      See also ZK Client-side Reference: Property Rendering

      Overrides:
        `renderProperties` in class `XulElement`
      Throws:
        `java.io.IOException`

    - #### getModel

          public <T> ListModel<T> getModel()

      Returns the list model associated with this radiogroup, or null if this radiogroup is not associated with any list data model.
      Since:
        6.0.0

    - #### setModel

          public void setModel​(ListModel<?> model)

      Sets the list model associated with this radiogroup. If a non-null model is assigned, no matter whether it is the same as the previous, it will always cause re-render.
      Parameters:
        `model` - the list model to associate, or null to dis-associate any previous model.
      Throws:
        `UiException` - if failed to initialize with the model
      Since:
        6.0.0

    - #### onInitRender

          public void onInitRender​(Event data)

      For model rendering
      Parameters:
        `data` -

    - #### getRadioRenderer

          public <T> RadioRenderer<T> getRadioRenderer()

      Returns the renderer to render each radio, or null if the default renderer is used.
      Since:
        6.0.0

    - #### setRadioRenderer

          public void setRadioRenderer​(RadioRenderer<?> renderer)

      Sets the renderer which is used to render each row if `getModel()` is not null.

      Note: changing a render will not cause the radiogroup to re-render. If you want it to re-render, you could assign the same model again (i.e., setModel(getModel())), or fire an `ListDataEvent` event.

      Parameters:
        `renderer` - the renderer, or null to use the default.
      Throws:
        `UiException` - if failed to initialize with the model
      Since:
        6.0.0

    - #### setRadioRenderer

          public void setRadioRenderer​(java.lang.String clsnm)
                                throws java.lang.ClassNotFoundException,
                                       java.lang.NoSuchMethodException,
                                       java.lang.IllegalAccessException,
                                       java.lang.InstantiationException,
                                       java.lang.reflect.InvocationTargetException

      Sets the renderer by use of a class name. It creates an instance automatically.
      Throws:
        `java.lang.ClassNotFoundException`
        `java.lang.NoSuchMethodException`
        `java.lang.IllegalAccessException`
        `java.lang.InstantiationException`
        `java.lang.reflect.InvocationTargetException`
      Since:
        6.0.0

    - #### clone

          public java.lang.Object clone()

      Description copied from interface: `Component`
      Clones the component. All of its children and descendants are cloned. Also, ID are preserved.
      Specified by:
        `clone` in interface `Component`
      Overrides:
        `clone` in class `XulElement`
      Returns:
        the new component. Notice that it doesn't belong to any page, nor desktop. It doesn't have a parent, either.

    - #### service

          public void service​(AuRequest request,
                              boolean everError)

      Processes an AU request.
      Specified by:
        `service` in interface `ComponentCtrl`
      Overrides:
        `service` in class `HtmlBasedComponent`
        `everError` - whether any error ever occurred before processing this request.
      Since:
        10.0.0
      See Also:
        `AbstractComponent.setAuService(org.zkoss.zk.au.AuService)`

    - #### onPageAttached

          public void onPageAttached​(Page newpage,
                                     Page oldpage)

      Description copied from class: `AbstractComponent`
      Default: handles special event listeners.
      Specified by:
        `onPageAttached` in interface `ComponentCtrl`
      Overrides:
        `onPageAttached` in class `AbstractComponent`
      Parameters:
        `newpage` - the new page (never null).
        `oldpage` - the previous page, if any, or null if it didn't belong to any page.
      See Also:
        `ComponentCtrl.onPageAttached(org.zkoss.zk.ui.Page, org.zkoss.zk.ui.Page)`

    - #### onPageDetached

          public void onPageDetached​(Page page)

      Description copied from class: `AbstractComponent`
      Default: handles special event listeners.
      Specified by:
        `onPageDetached` in interface `ComponentCtrl`
      Overrides:
        `onPageDetached` in class `AbstractComponent`
      Parameters:
        `page` - the previous page (never null)
      See Also:
        `ComponentCtrl.onPageDetached(org.zkoss.zk.ui.Page)`

    - #### onChildAdded

          public void onChildAdded​(Component child)

      Description copied from class: `AbstractComponent`
      Default: handles special event listeners.
      Specified by:
        `onChildAdded` in interface `ComponentCtrl`
      Overrides:
        `onChildAdded` in class `AbstractComponent`
      See Also:
        `ComponentCtrl.onChildAdded(org.zkoss.zk.ui.Component)`