【ExtJS】FormPanel 布局(一)



准备工作,布置一个最简单的Form,共5个组件,都为textfield。

 1 Ext.onReady(function(){
 2     Ext.create(‘Ext.form.Panel‘, {
 3         width: 500,
 4         title: ‘Layout‘,
 5      renderTo : ‘form‘,
 6         items: [{
 7             xtype : ‘textfield‘,
 8             fieldLabel : ‘edit1‘,
 9             name : ‘edit1‘,
10         },{
11             xtype : ‘textfield‘,
12             fieldLabel : ‘edit2‘,
13             name : ‘edit1‘,
14         },{
15             xtype : ‘textfield‘,
16             fieldLabel : ‘edit3‘,
17             name : ‘edit1‘,
18         },{
19             xtype : ‘textfield‘,
20             fieldLabel : ‘edit4‘,
21             name : ‘edit1‘,
22         },{
23             xtype : ‘textfield‘,
24             fieldLabel : ‘edit5‘,
25             name : ‘edit1‘,
26         }],
27      buttons : [{
28        text : ‘upDate‘,
29        handler : function(){
30          //do something...
31        }
32      }]
33     });
34 })

效果:



1、Absolute绝对布局:

  使用标准x,y属性进行x/y坐标定位。

 1 Ext.create(‘Ext.form.Panel‘, {
 2   title: ‘Absolute‘,
 3   renderTo: ‘absolute‘,
 4   width: 500,
 5   height: 250,
 6   layout: ‘absolute‘,
 7   items: [{
 8      xtype : ‘textfield‘,
 9     fieldLabel : ‘edit1‘,
10      width : 100,
11      name : ‘edit1‘,
12      x : 10,
13       y : 10
14    },{
15      xtype : ‘textfield‘,
16      fieldLabel : ‘edit2‘,
17      width : 160,
18      name : ‘edit1‘,
19      x : 20,
20      y : 40
21    },{
22      xtype : ‘textfield‘,
23      fieldLabel : ‘edit3‘,
24      width : 60,
25      name : ‘edit1‘,
26       x : 30,
27      y : 70
28    },{
29       xtype : ‘textfield‘,
30       fieldLabel : ‘edit4‘,
31       width : 190,
32        name : ‘edit1‘,
33       x : 40,
34       y : 100
35   },{
36     xtype : ‘textfield‘,
37     fieldLabel : ‘edit5‘,
38     width : 220,
39     name : ‘edit1‘,
40     x : 50,
41     y : 130
42   }],
43   buttons : [{
44     text : ‘upDate‘,
45     handler : function() {
46           //do something...
47     }
48   }]
49 });

效果:

ps:在调试的时候遇到一个情况,如果仅设置宽width而不设置高height的话,会出现“Layout run failed ”错误。不过若是仅设置高而不设置宽,则Form宽填充整个页面,而不会出现错误。



2、accordion手风琴式布局:

注意:只有 Ext的各种Panel和Ext.panel.Panel的子类可以用于这种布局的容器中.

诸如Header、Table、Tool等,子类有:

  Ext.container.ButtonGroup

  Ext.form.Panel

  Ext.menu.Menu

  Ext.panel.Table

  Ext.tab.Panel

  Ext.tip.Tip

  Ext.window.Window

 1 Ext.create(‘Ext.form.Panel‘, {
 2     width: 500,
 3     height: 250,
 4     title: ‘Accordion‘,
 5     renderTo: ‘accordion‘,
 6     layout : ‘accordion‘,
 7     items: [{
 8         title: ‘Panel1‘,
 9         html: ‘Panel content!‘
10     },{
11         itle: ‘Panel2‘,
12         html: ‘Panel content!‘
13     },{
14         title: ‘Panel3‘,
15         html: ‘Panel content!‘
16     }],
17     buttons : [{
18        text : ‘open Panel3‘,
19       handler : function() {
20           Ext.getCmp(‘Panel3‘).expand(true);
21       }
22     }]
23 });                    

效果:



3、Anchor式布局:

根据父控件宽高,以固定百分比或者固定偏移量来决定子控件的尺寸。

 1 Ext.create(‘Ext.form.Panel‘,{
 2     width: 500,
 3     height: 400,
 4     title: ‘Anchor‘,
 5     renderTo: ‘anchor‘,
 6     layout: ‘anchor‘,
 7     buttonAlign : ‘center‘,
 8     items: [{
 9         xtype: ‘panel‘,
10           title: ‘75% Width and 20% Height‘,
11           anchor: ‘75% 20%‘
12         },{
13          xtype: ‘panel‘,
14           title: ‘Offset -300 Width and -200 Height‘,
15             anchor: ‘-300 -200‘
16         },{
17             xtype: ‘panel‘,
18             title: ‘Offset -200 Width and 40% Height‘,
19             anchor: ‘-250 40%‘
20         }],
21     buttons : [{
22         text : ‘upDate‘,
23         handler : function() {
24             //do something..
25         }
26     }]
27 });                

效果:



4、Auto

 1 Ext.create(‘Ext.form.Panel‘,{
 2     width: 500,
 3     height: 400,
 4     title: ‘Auto‘,
 5     renderTo: ‘auto‘,
 6     layout: ‘auto‘,
 7     buttonAlign : ‘center‘,
 8     margin: ‘50 150 50 50‘,
 9     border: true,
10     items: [{
11          type: ‘panel‘,
12          title: ‘AutoLayout1‘,
13          margin: ‘10 10 10 10‘,
14          border: true,
15     },{
16         xtype: ‘panel‘,
17     title: ‘AutoLayout2‘,
18     border: true,
19     margin: ‘10 10 10 10‘
20     }],
21     buttons : [{
22         text : ‘upDate‘,
23         handler : function() {
24             //do something..
25     }
26     }]
27 });          

效果:




一些常用配置与问题:

1、border 边框设置

  默认为false,边框不可见。true为边框可见。

2、margin 组件页边

  margin 可以是一个数值适用于所有边 或者它可以是每个样式的CSS样式规范, 例如: ‘10 5 3 10‘。

3、buttonAlign 按钮Button位置

  指定Panel中按钮的位置。可配置的值有‘right‘, ‘left‘ 和 ‘center‘(对于所有的buttons/fbar默认为‘right‘,对于toolbar 则默认为‘left‘)。

4、handler : function(){}

  按钮点击事件的触发。

5、关于标签fieldLabel与title

  title为要现实的标签文本。

  fieldLabel为域标签。它被附加了labelSeparator, 其位置和大小被labelAlign、 labelWidth和labelPad配置确认。

    labelSeparator: 插入到fieldLabel后面的字符。默认为":"

    labelAlign: 控制fieldLabel的位置和对齐方式。有效值为:

       "left" (默认) - 标签位于域的左边,其文本左对齐。其宽度由labelWidth配置确定。

       "top" - 标签位于域的顶端。

       "right" - 标签位于域的右边,其文本右对齐。其宽度由labelWidth配置确定。

    labelWidth: fieldLabel以像素为单位的宽度。只适用于 labelAlign设置了“left”或“right”。默认为"100"。

    labelPad: fieldLabel和输入域之间的像素空间的合计。默认为"5"。

时间: 2024-10-27 06:54:46

【ExtJS】FormPanel 布局(一)的相关文章

ExtJs FormPanel布局

FormPanel有两种布局:form和column,form是纵向布局,column为横向布局.默认为后者.使用layout属性定义布局类型.对于一个复杂的布局表单,最重要的是正确分割,分割结果直接决定布局能否顺利实现.如果不再使用默认布局,那么我们必须为每一个元素指定一种布局方式,另外,还必须遵循以下几点:[1]落实到任何一个表单组件后,最后总是form布局[2]defaultType属性不一定起作用,必须显式为每一个表单组件指定xtype或new出新对象[3]在column布局中,通过co

Extjs关于FormPanel布局

Extjs关于FormPanel布局 FormPanel有两种布局:form和column,form是纵向布局,column为横向布局.默认为后者.使用layout属性定义布局类型.对于一个复杂的布局表单,最重要的是正确分割,分割结果直接决定布局能否顺利实现.如果不再使用默认布局,那么我们必须为每一个元素指定一种布局方式,另外,还必须遵循以下几点:[1]落实到任何一个表单组件后,最后总是form布局[2]defaultType属性不一定起作用,必须显式为每一个表单组件指定xtype或new出新对

ExtJs常用布局--layout详解(含实例)

序言: 笔者用的ExtJs版本:ext-3.2.0 ExtJs常见的布局方式有:border.form.absolute.column.accordion.table.fit.card.anchor 另外,不常见的布局有:tab.vbox.hbox 本文所有实例代码已提供下载,下载链接:ExtJs常用布局--layout详解实例代码 简介: 最常用的边框布局--BorderLayout 最简单的布局--FitLayout 制作伸缩菜单的布局--Accordion 实现操作向导的布局--CardL

ExtJS 页面布局

EXT标准布局类 面板相当于一张干净的白纸,如果直接在上面添加内容,将很难控制面板中内容的显示位置,面板元素越多就越显得凌乱,所以需要在面板上划分不同的区域,将面板内容展示到希望的位置上.ExtJS通过提供多种布局类来为面板提供支持,主要包括如下10种:     ContainerLayout(容器布局)     FitLayout(自适应布局)     AccordionLayout(折叠布局)     CardLayout(卡片式布局)     AnchorLayout(锚点布局)    

extjs4.1.1 formPanel 布局

我们先来看看前台JS: Ext.onReady(function() { Ext.QuickTips.init();// 浮动信息提示 Ext.form.Field.prototype.msgTarget = 'side';// 设置控件的错误信息显示位置,主要可选的位置有:qtip,title,under,side,[elementId] Ext.BLANK_IMAGE_URL = 'resources/images/default/s.gif';// 替换图片文件地址为本地 var simp

EXTJS常用布局详解

ExtJS的容器组件都可以通过设置layout参数来选择布局改变显示风格, 它的有效值有: absolute:控制位置,accordion:手风琴布局,anchor:控制大小,border:边界式布局,card:卡片布局,column:列布局,fit:填充式布局,form:表单布局,table:表格式布局 一共9种,在这里简单总结一下 absolute:Absolute布局的目的是为了扩展布局的属性,使得布局更容易使用 accordion:accordion布局也称手风琴布局,在accordio

【ExtJS】FormPanel 布局(二)

要达成在Ext.picker.Date组件中添加时间选择组件,首先得明确一个思路,在继承Ext.form.field.Date组件,并且添加一个时间选择功能. 第一步:明确扩展组件的步骤: 创建一个Ext.form.field.Date的扩展组件: 1.定义一个Ext.form.field.Date的子类My.DateTimeField Ext.define('My.DateTimeField',{ extend: 'Ext.form.field.Date' }); 2.重载Ext.panel.

【ExtJS】 布局Layout

布局用于定义容器如何组织内部子元素和控制子元素的大小. ExtJS中有两种类型的布局:Container容器类布局与Component组件类布局. Containter容器类布局:负责容器内容Extjs元素和调整Extjs元素的大小. 包括:Border布局.Box布局.Fit布局等等. Component组件类布局:负责组织组件的HTML元素. 包括:Dock布局.Toolbar布局.Field布局.TriggerField布局. 一.Containter布局: 我们首先拿一张图来看看Cont

formpanel布局的学习

FormPanel有两种布局:form和column,form是纵向布局,column为横向布局.默认为后者.使用layout属性定义布局类型.对于一个复杂的布局表单,最重要的是正确分割,分割结果直接决定布局能否顺利实现. 如果不再使用默认布局,那么我们必须为每一个元素指定一种布局方式,另外,还必须遵循以下几点: [1]落实到任何一个表单组件后,最后总是form布局 [2]defaultType属性不一定起作用,必须显式为每一个表单组件指定xtype或new出新对象 [3]在column布局中,