Hbox"

From Documentation
 
(41 intermediate revisions by 10 users not shown)
Line 1: Line 1:
== Hbox ==
+
{{ZKComponentReferencePageHeader}}
The <tt>hbox</tt> component is used to create a horizontally oriented box. Each component placed in the <tt>hbox </tt>will be placed horizontally in a row.
 
  
[[Image:box.png]]  
+
= Hbox =
 +
 
 +
*Demonstration: [http://www.zkoss.org/zkdemo/layout/box Hbox]
 +
*Java API: <javadoc>org.zkoss.zul.Hbox</javadoc>
 +
*JavaScript API: <javadoc directory="jsdoc">zul.box.Box</javadoc>
 +
*Style Guide: [[ZK_Style_Guide/XUL_Component_Specification/Hbox| Hbox]]
 +
 
 +
= Employment/Purpose =
 +
 
 +
The hbox component is used to layout its child components horizontally and control those children's horizontal and vertical position..
 +
 
 +
 
 +
== Recommend Hlayout ==
 +
Notice that hbox and vbox are designed to provide a more sophisticated layout, such as splitter, alignment, and packing. ZK renders these 2 components with an HTML table.
 +
If you only need the components for layout, we suggest using [[ZK_Component_Reference/Layouts/Hlayout | Hlayout]] and [[ZK_Component_Reference/Layouts/Vlayout | Vlayout]] instead, since the performance is much better (due to the use of HTML DIV instead of TABLE).
 +
 
 +
= Example =
 +
 
 +
[[Image:ZKComRef_Hbox_Simple_Examples.PNG]]  
  
 
<source lang="xml" >
 
<source lang="xml" >
Line 17: Line 34:
 
</source>
 
</source>
  
== Class Name ==
+
=Properties=
<tt>org.zkoss.zul.Hbox</tt>
 
  
== Supported Child Components ==
+
* '''Inherited Properties''': [[ZK Component Reference/Containers/Box#Properties | Box]]
  
<source lang="xml" >
+
==Align and Pack==
*ALL
+
[[Image:ZKComRef_Hbox_Simple_Examples_align_pack.PNG]]
</source>
 
  
== Supported Events  ==
+
<source lang="xml" highlight="23">
 +
<zk xmlns:n="native">
 +
    <style content=".box {| class='wikitable' | width="100%"
 +
    <custom-attributes
 +
        packs="${['', 'start', 'center', 'end']}"
 +
        aligns="${['', 'stretch', 'start', 'center', 'end']}"
 +
    />
  
<source lang="xml" >
+
    <vlayout>
*NONE
+
        <hlayout height="70px" width="900px">
 +
            <div hflex="1" vflex="1" sclass="box">
 +
              <n:h3>pack / align</n:h3>
 +
            </div>
 +
            <div forEach="${packs}" hflex="1" vflex="1" sclass="box">
 +
              <n:h3>${each}</n:h3>
 +
            </div>
 +
        </hlayout>
 +
        <hlayout forEach="${aligns}" height="100px" width="900px">
 +
            <custom-attributes align="${each}"/>
 +
            <div hflex="1" vflex="1" sclass="box">
 +
              <n:h3>${align}</n:h3>
 +
            </div>
 +
         
 +
            <hbox forEach="${packs}" align="${align}" pack="${each}" hflex="1" vflex="1" sclass="box">
 +
                <button label="1" />
 +
                <button label="2" />
 +
                <button label="3" />
 +
            </hbox>
 +
        </hlayout>
 +
    </vlayout>
 +
</zk>
 
</source>
 
</source>
 +
{{versionSince| 5.0.0}}
  
== Properties ==
+
= Cell Component  =
 +
In ZK5, we have introduced a new component named Cell which can be embedded into a Grid or Box (Hbox and Vbox) to fully control the layout and the style. You can now use the rowspan or the colspan property to layout your Grid, for example a content cell can now cross over multiple rows. The code below demonstrates how to do this:
  
 
<source lang="xml" >
 
<source lang="xml" >
*NONE
+
<hbox>
 +
    <cell sclass="years">
 +
        ...
 +
    </cell>
 +
</hbox>
 
</source>
 
</source>
 +
{{versionSince| 5.0.0}}
  
== Methods ==
+
= Limitation =
 +
Box component is consisted by Table element. Therefore, when put Input element like Textbox, Combobox inside Box component, specify width and height to Box component will be ignored when browser try to render table element.
  
<source lang="xml" >
+
For example,
*NONE
+
<source lang="xml">
 +
<hbox height="200px" width="200px" style="border: 1px solid red">
 +
    <textbox hflex="1" value="1" />
 +
    <textbox hflex="1" value="1" />
 +
</hbox>
 
</source>
 
</source>
 +
You will see the Box width exceed 200px. Also check the [http://jsfiddle.net/A5g9q/ sample] with pure HTML in jsfiddle.
  
== Inherited From  ==
+
=Supported Events=
 +
 
 +
{| class='wikitable' | width="100%"
 +
! <center>Name</center>
 +
! <center>Event Type</center>
 +
|-
 +
| None
 +
| None
 +
|}
 +
*Inherited Supported Events: [[ZK Component Reference/Containers/Box#Supported_Events | Box]]
  
{| border="1"
+
=Supported Children=
! <center>Inherited From</center>
 
  
|-
+
*ALL
| [#Box org.zkoss.zul.Box]
 
  
|-
+
=Use Cases=
| [#XulElement org.zkoss.zul.impl.XulElement]
 
  
 +
{| class='wikitable' | width="100%"
 +
! Version !! Description !! Example Location
 
|-
 
|-
| [#HtmlBasedComponent org.zkoss.zk.ui.HtmlBasedComponent]
+
| &nbsp;
 +
| &nbsp;
 +
| &nbsp;
 +
|}
  
 +
=Version History=
 +
{{LastUpdated}}
 +
{| class='wikitable' | width="100%"
 +
! Version !! Date !! Content
 
|-
 
|-
| [#AbstractComponent org.zkoss.zk.ui.AbstractComponent ]
+
| &nbsp;
 +
| &nbsp;
 +
| &nbsp;
 +
|}
  
|}
+
{{ZKComponentReferencePageFooter}}

Latest revision as of 01:25, 23 January 2024

Hbox

Employment/Purpose

The hbox component is used to layout its child components horizontally and control those children's horizontal and vertical position..


Recommend Hlayout

Notice that hbox and vbox are designed to provide a more sophisticated layout, such as splitter, alignment, and packing. ZK renders these 2 components with an HTML table. If you only need the components for layout, we suggest using Hlayout and Vlayout instead, since the performance is much better (due to the use of HTML DIV instead of TABLE).

Example

ZKComRef Hbox Simple Examples.PNG

<zk>
	<vbox>
		<button label="Button 1" />
		<button label="Button 2" />
	</vbox>
	<hbox>
		<button label="Button 3" />
		<button label="Button 4" />
	</hbox>
</zk>

Properties

  • Inherited Properties: Box

Align and Pack

ZKComRef Hbox Simple Examples align pack.PNG

<zk xmlns:n="native">
    <style content=".box {| class='wikitable' | width="100%"
    <custom-attributes 
        packs="${['', 'start', 'center', 'end']}"
        aligns="${['', 'stretch', 'start', 'center', 'end']}"
    />

    <vlayout>
        <hlayout height="70px" width="900px">
            <div hflex="1" vflex="1" sclass="box">
              <n:h3>pack / align</n:h3>
            </div>
            <div forEach="${packs}" hflex="1" vflex="1" sclass="box">
              <n:h3>${each}</n:h3>
            </div>
        </hlayout>
        <hlayout forEach="${aligns}" height="100px" width="900px">
            <custom-attributes align="${each}"/> 
            <div hflex="1" vflex="1" sclass="box">
              <n:h3>${align}</n:h3>
            </div>
          
            <hbox forEach="${packs}" align="${align}" pack="${each}" hflex="1" vflex="1" sclass="box">
                <button label="1" />
                <button label="2" />
                <button label="3" />
            </hbox>
        </hlayout>
    </vlayout>
</zk>

Since 5.0.0

Cell Component

In ZK5, we have introduced a new component named Cell which can be embedded into a Grid or Box (Hbox and Vbox) to fully control the layout and the style. You can now use the rowspan or the colspan property to layout your Grid, for example a content cell can now cross over multiple rows. The code below demonstrates how to do this:

<hbox>
    <cell sclass="years">
        ...
    </cell>
</hbox>

Since 5.0.0

Limitation

Box component is consisted by Table element. Therefore, when put Input element like Textbox, Combobox inside Box component, specify width and height to Box component will be ignored when browser try to render table element.

For example,

<hbox height="200px" width="200px" style="border: 1px solid red">
    <textbox hflex="1" value="1" />
    <textbox hflex="1" value="1" />
</hbox>

You will see the Box width exceed 200px. Also check the sample with pure HTML in jsfiddle.

Supported Events

Name
Event Type
None None
  • Inherited Supported Events: Box

Supported Children

*ALL

Use Cases

Version Description Example Location
     

Version History

Last Update : 2024/01/23


Version Date Content
     



Last Update : 2024/01/23

Copyright © Potix Corporation. This article is licensed under GNU Free Documentation License.