理解了layout之后,再看看FormPanel源码,发现它指定了layout:'form',而FormPanel又是Container的子孙类,所以,它就是用了FormLayout布局。只是通过FormPanel,将FormLayout所需要的配置都做了些初始化提取出来了,便于开发者使用和理解。所以,在FormPanel渲染后就会用FormLayout来进行doLayout功能。
所以写成下面两种方式的代码,效果是一样的:
一、用FormPanel
Ext.onReady(function(){
var panel = new Ext.FormPanel({
renderTo:'hello',
title:'容器组件',
width:300,
hideLabels:false,
labelAlign:'right',
height:120,
defaultType:'textfield',
items:[{
fieldLabel:'请输入姓名',
name:'name'
},{
fieldLabel:'请输入地址',
name:'address'
},{
fieldLabel:'请输入电话',
name:'tel'
}]
});
});
二、只指定layout:'form'
Ext.onReady(function(){
var panel = new Ext.Panel({
renderTo:'hello',
title:'容器组件',
width:300,
layout:'form',
hideLabels:false,
labelAlign:'right',
height:120,
defaultType:'textfield',
items:[{
fieldLabel:'请输入姓名',
name:'name'
},{
fieldLabel:'请输入地址',
name:'address'
},{
fieldLabel:'请输入电话',
name:'tel'
}]
});
});