Package org.zkoss.zul

## Class Checkbox

- java.lang.Object
- - org.zkoss.zk.ui.AbstractComponent
  - - org.zkoss.zk.ui.HtmlBasedComponent
    - - org.zkoss.zul.impl.XulElement
      - - org.zkoss.zul.impl.LabelElement
        - - org.zkoss.zul.impl.LabelImageElement
          - - org.zkoss.zul.Checkbox

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

      public class Checkbox
      extends LabelImageElement
      implements Disable

  A checkbox.

  Event:

  1. org.zkoss.zk.ui.event.CheckEvent is sent when a checkbox is checked or unchecked by user.
  Author:
    tomyeh
  See Also:
    Serialized Form

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class | Description
    --- | --- | ---
    `static class` | `Checkbox.State` | This class is the return state for getState()

    - ### Nested classes/interfaces inherited from class org.zkoss.zul.impl.LabelImageElement

      `LabelImageElement.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
    --- | ---
    `Checkbox()` |
    `Checkbox​(java.lang.String label)` |
    `Checkbox​(java.lang.String label, java.lang.String image)` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `java.lang.String` | `getAutodisable()` | Returns a list of component IDs that shall be disabled when the user clicks this checkbox.
    `java.lang.String` | `getName()` | Returns the name of this component.
    `Checkbox.State` | `getState()` | Returns the current state according to isIndeterminate() and isChecked().
    `<T> T` | `getValue()` | Returns the value.
    `java.lang.String` | `getZclass()` | Returns the Style of checkbox label
    `boolean` | `isChecked()` | Returns whether it is checked.
    `protected boolean` | `isChildable()` | Default: not childable.
    `boolean` | `isDisabled()` | Returns whether it is disabled.
    `boolean` | `isIndeterminate()` | Return whether checkbox is in indeterminate state.
    `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` | `setAutodisable​(java.lang.String autodisable)` | Sets a list of component IDs that shall be disabled when the user clicks this checkbox.
    `void` | `setChecked​(boolean checked)` | Sets whether it is checked, changing checked will set indeterminate to false.
    `void` | `setDisabled​(boolean disabled)` | Sets whether it is disabled.
    `void` | `setIndeterminate​(boolean indeterminate)` | Set whether checkbox is in indeterminate state.
    `void` | `setMold​(java.lang.String mold)` | Sets the mold to render this component.
    `void` | `setName​(java.lang.String name)` | Sets the name of this component.
    `<T> void` | `setValue​(T value)` | Sets the value.
    `protected void` | `updateByClient​(java.lang.String name, java.lang.Object value)` | Called when the widget running at the client asks the server to update a value.

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

      `clone, getExtraCtrl, getHoverImage, getHoverImageContent, getIconSclass, getIconSclasses, getIconTooltip, getIconTooltips, getImage, getImageContent, getPropertyAccess, isImageAssigned, setHoverImage, setHoverImageContent, setHoverImageContent, setIconSclass, setIconSclasses, setIconTooltip, setIconTooltips, setImage, setImageContent, setImageContent`

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

      `getLabel, renderCrawlable, setLabel`

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

      `getContext, getCtrlKeys, getPopup, 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, getHeight, getHflex, getLeft, getRenderdefer, getSclass, getStyle, getTabindex, getTabindexInteger, getTooltiptext, getTop, getVflex, getWidth, 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, isDisabledHostChanged, isInitialized, isInvalidated, isListenerAvailable, isVisible, onChildAdded, onChildRemoved, onPageAttached, onPageDetached, 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, setPage, setPageBefore, setParent, setStubonly, setStubonly, setSubBindingAnnotationCount, setTemplate, setVisible, setVisibleDirectly, setWidgetClass, setWidgetListener, setWidgetOverride, smartUpdate, smartUpdate, smartUpdate, smartUpdate, smartUpdate, smartUpdate, smartUpdate, smartUpdate, smartUpdate, smartUpdateWidgetListener, smartUpdateWidgetOverride, toString, updateSubBindingAnnotationCount, willPassivate, willPassivate, willSerialize, willSerialize`

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

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

- - ### Constructor Detail

    - #### Checkbox

          public Checkbox()

    - #### Checkbox

          public Checkbox​(java.lang.String label)

    - #### Checkbox

          public Checkbox​(java.lang.String label,
                          java.lang.String image)

  - ### Method Detail

    - #### isIndeterminate

          public boolean isIndeterminate()

      Return whether checkbox is in indeterminate state. Default: false.
      Returns:
        true if checkbox is indeterminate
      Since:
        8.6.0

    - #### setIndeterminate

          public void setIndeterminate​(boolean indeterminate)

      Set whether checkbox is in indeterminate state.
      Parameters:
        `indeterminate` - whether checkbox is indeterminate
      Since:
        8.6.0

    - #### getAutodisable

          public java.lang.String getAutodisable()

      Returns a list of component IDs that shall be disabled when the user clicks this checkbox.
      Since:
        6.0.0

    - #### setAutodisable

          public void setAutodisable​(java.lang.String autodisable)

      Sets a list of component IDs that shall be disabled when the user clicks this checkbox.

      To represent the checkbox itself, the developer can specify `self`. For example, `<checkbox id="ok" autodisable="self,cancel"/>` is the same as `<checkbox id="ok" autodisable="ok,cancel"/>` that will disable both the ok and cancel checkboxes when an user clicks it.

      The checkbox being disabled will be enabled automatically once the client receives a response from the server. In other words, the server doesn't notice if a checkbox is disabled with this method.

      However, if you prefer to enable them later manually, you can prefix with '+'. For example, `<checkbox id="ok" autodisable="+self,+cancel"/>`

      Then, you have to enable them manually such as

          if (something_happened){
            ok.setDisabled(false);
            cancel.setDisabled(false);

      Default: null.

      Since:
        5.0.0

    - #### isDisabled

          public boolean isDisabled()

      Returns whether it is disabled.

      Default: false.

      Specified by:
        `isDisabled` in interface `Disable`

    - #### setDisabled

          public void setDisabled​(boolean disabled)

      Sets whether it is disabled.
      Specified by:
        `setDisabled` in interface `Disable`

    - #### isChecked

          public boolean isChecked()

      Returns whether it is checked.

      Default: false.

    - #### setChecked

          public void setChecked​(boolean checked)

      Sets whether it is checked, changing checked will set indeterminate to false.

    - #### getState

          public Checkbox.State getState()

      Returns the current state according to isIndeterminate() and isChecked().
      Returns:
        CHECKED, UNCHECKED or INDETERMINATE
      Since:
        9.0.0

    - #### getValue

          public <T> T getValue()

      Returns the value.

      Default: null. (since 6.5.0)

      Since:
        5.0.4

    - #### setValue

          public <T> void setValue​(T value)

      Sets the value.
      Parameters:
        `value` - the value;
      Since:
        5.0.4

    - #### getName

          public java.lang.String getName()

      Returns the name of this component.

      Default: null.

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

      The name is used only to work with "legacy" Web application that handles user's request by servlets. It works only with HTTP/HTML-based browsers. It doesn't work with other kind of clients.

    - #### setName

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

      Sets the name of this component.

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

      The name is used only to work with "legacy" Web application that handles user's request by servlets. It works only with HTTP/HTML-based browsers. It doesn't work with other kind of clients.

      Parameters:
        `name` - the name of this component.

    - #### isChildable

          protected boolean isChildable()

      Default: not childable.
      Overrides:
        `isChildable` in class `AbstractComponent`

    - #### setMold

          public void setMold​(java.lang.String mold)

      Description copied from interface: `Component`
      Sets the mold to render this component.
      Specified by:
        `setMold` in interface `Component`
      Overrides:
        `setMold` in class `AbstractComponent`
      Parameters:
        `mold` - the mold. If null or empty, "default" is assumed.
      See Also:
        `ComponentDefinition`

    - #### getZclass

          public java.lang.String getZclass()

      Returns the Style of checkbox label

      Default: "z-checkbox"

      Since 3.5.1

      Overrides:
        `getZclass` in class `HtmlBasedComponent`
      See Also:
        `HtmlBasedComponent.getSclass()`

    - #### 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 `LabelImageElement`
      Throws:
        `java.io.IOException`

    - #### service

          public void service​(AuRequest request,
                              boolean everError)

      Processes an AU request.

      Default: in addition to what are handled by `HtmlBasedComponent.service(org.zkoss.zk.au.AuRequest, boolean)`, it also handles onCheck.

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

    - #### updateByClient

          protected void updateByClient​(java.lang.String name,
                                        java.lang.Object value)

      Description copied from class: `AbstractComponent`
      Called when the widget running at the client asks the server to update a value. The update is caused by an AU request named `setAttr` (by invoking zk.Widget's smartUpdate at client).

      By default, it does nothing but log a warning message, since it is not safe to allow the client to update a field arbitrary.

      However, if you'd like to allow the update for a particular component you could do one of the following

      1. For component developers: override this method to update the field directly. For example,

             protected void updateByClient(String name, Object value) {
                     if ("disabled".equals(name))
                             setDisabled(name, ((Boolean)value).booleanValue());
                     else
                             super.updateByClient(name, value);

      2. For application developers: set an attribute called `org.zkoss.zk.ui.updateByClient` to be true. Then, this method will use reflection to find out the setter to update the value. Nothing happens if the method is not found.

      Notice: this method will invoke `AbstractComponent.disableClientUpdate(boolean)` to disable any update to the client, when calling the setter.

      If you want to enable the client update for all instances of a given component (though not recommended for the security reason), you could refer to here.

      See also zk.Widget.smartUpdate().

      Overrides:
        `updateByClient` in class `AbstractComponent`