- 浏览: 217146 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
henchong:
如果提示信息全是数字的话,是不会自动换行的,不知道这个该怎么解 ...
用ExtJs为表格单元格增加Tooltips浮动信息 -
李君寻:
自动换行,算是懂了
ColumnLayout的使用方法 -
icrwen:
楼主能解释下为啥要用air技术呢,是不是只用ext就可以了啊
extjs+air开发 -
wenniuwuren:
不能显示图片..
利用session实现一次性验证码 -
追风筝的孩子:
还是没有解决啊
com.ibatis.sqlmap.client.SqlMapException: There is no statement named 语句名 in thi
CoulumnLayout是经常用到的布局类型,但也是让人感到迷惑的布局。主要原因是同一效果的定义方法有多种。笔者在早期的一篇博文虽然也做过讲解,但是因为例子写的是简洁的写法,反而没把问题说清楚,实在深感抱歉。
总体上说要达到同一效果,CoulumnLayout的定义方法有以下4种:
■ 一行定义一个CoulumnLayout,每列中只有一个控件
■ 只定义一个CoulumnLayout,每列中只有一个控件
■ 只定义一个CoulumnLayout,每列中有多个控件
■ 一行一个CoulumnLayout,每列中有多个控件
下面通过例子详细说明一下这4种方法以及它们的优缺点。
(1) 一行定义一个CoulumnLayout,每列中只有一个控件的定义方法
该方法是最笨的方法,但是却是最实用的方法,也是笔者强烈推荐的方法。
为什么说该方法笨呢?请先看以下源代码:
Ext.onReady(function(){
var frm = new Ext.form.FormPanel({
applyTo: "form1",
autoHeight: true,
width: 750,
frame: true,
labelWidth:80,
labelSeparator:":",
title:'一行定义一个CoulumnLayout,每列中只有一个控件',
items:[
//第一行
{layout:'column',border:false,items:[
//第一列
{columnWidth:.3,layout: 'form',border:false,items: [
{xtype:'textfield',fieldLabel:'一行一列',name:'text1-1-1',anchor:'90%'}
]},
//第二列
{columnWidth:.3,layout: 'form',border:false,items: [
{xtype:'textfield',fieldLabel:'一行二列',name:'text1-1-2',anchor:'90%'}
]},
//第三列
{columnWidth:.3,layout: 'form',border:false,items: [
{xtype:'textfield',fieldLabel:'一行三列',name:'text1-1-3',anchor:'90%'}
]}
]},
//第二行
{layout:'column',border:false,items:[
//第一列
{columnWidth:.3,layout: 'form',border:false,items: [
{xtype:'textfield',fieldLabel:'二行一列',name:'text1-2-1',anchor:'90%'}
]},
//第二列
{columnWidth:.3,layout: 'form',border:false,items: [
{xtype:'textfield',fieldLabel:'二行二列',name:'text1-2-2',anchor:'90%'}
]}
]},
//第三行
{layout:'column',border:false,items:[
//第一列
{columnWidth:.25,layout: 'form',border:false,items: [
{xtype:'checkbox',fieldLabel:'三行一列',boxLabel:'三行一列',name:'text1-3-1',anchor:'90%'}
]},
//第二列
{columnWidth:.15,layout: 'form',border:false,items: [
{xtype:'checkbox',hideLabel:true,boxLabel:'三行二列',name:'text1-3-2',anchor:'90%'}
]},
//第三列
{columnWidth:.15,layout: 'form',border:false,items: [
{xtype:'checkbox',hideLabel:true,boxLabel:'三行三列',name:'text1-3-3',anchor:'90%'}
]}
]}
]
});
看出该方法如何笨了吧?就是每定义一行就要重新定义一个CoulumnLayout:
{columnWidth:.3,layout: 'form',border:false,items: [[ /* 子组件 */]}
而且每行中的每列只定义一个控件:
//第一列
{columnWidth:.3,layout: 'form',border:false,items: [
{xtype:'textfield',fieldLabel:'一行一列',name:'text1-1-1',anchor:'90%'}
]},
这样不是要写多很多代码?确实够笨的。不过笔者认为笨不要紧,关键是能解决大问题。每行定义一个CoulumnLayout, 行与行之间相互独立起来,就不会互相影响了,尤其是定义第三行这样需要紧凑结构,不规则的行尤其适合。这样还有一个好处就是可以减少计算columnWidth的时间与配置tabIndex的问题。尤其是在已经有很多控件,要在中间中插入一个新的控件时,你会觉得还是该方法挺实用的。为什么会这样?请继续往下看其它方法。
(2) 只定义一个CoulumnLayout,每列中只有一个控件的方法
该方法顾名思义,就是不管三七二十一,就只定义一个CoulumnLayout,分行的问题由列自己解决。
列是如何自动分行的?是通过属性columnWidth来实现的。分行的原则就是从第一列的columnWidth开始计算,每当n(n>=1)列的columnWidth的和超过1的时候就会自动换行,然后从第n列重新开始计算,依此类推直到最后一列。
明白这个原则后,咱们来看看该方法的源代码:
var frm2 = new Ext.form.FormPanel({
applyTo: "form2",
autoHeight: true,
width: 750,
frame: true,
labelWidth:80,
labelSeparator:":",
title:'只定义一个CoulumnLayout,每列中只有一个控件',
items:[
{layout:'column',border:false,items:[
{columnWidth:.3,layout: 'form',border:false,items: [
{xtype:'textfield',fieldLabel:'一行一列',name:'text2-1-1',anchor:'90%'}
]},
{columnWidth:.3,layout: 'form',border:false,items: [
{xtype:'textfield',fieldLabel:'一行二列',name:'text2-1-2',anchor:'90%'}
]},
{columnWidth:.3,layout: 'form',border:false,items: [
{xtype:'textfield',fieldLabel:'一行三列',name:'text2-1-3',anchor:'90%'}
]},
{columnWidth:.3,layout: 'form',border:false,items: [
{xtype:'textfield',fieldLabel:'二行一列',name:'text2-2-1',anchor:'90%'}
]},
{columnWidth:.3,layout: 'form',border:false,items: [
{xtype:'textfield',fieldLabel:'二行二列',name:'text2-2-2',anchor:'90%'}
]},
{columnWidth:.3,layout: 'form',border:false,items: [
{xtype:'panel',html:' ',height:26}
]},
{columnWidth:.25,layout: 'form',border:false,items: [
{xtype:'checkbox',fieldLabel:'三行一列',boxLabel:'三行一列',name:'text2-3-1',anchor:'90%'}
]},
{columnWidth:.15,layout: 'form',border:false,items: [
{xtype:'checkbox',hideLabel:true,boxLabel:'三行二列',name:'text2-3-2',anchor:'90%'}
]},
{columnWidth:.15,layout: 'form',border:false,items: [
{xtype:'checkbox',hideLabel:true,boxLabel:'三行三列',name:'text2-3-3',anchor:'90%'}
]}
]}
]
});
代码中只定义了一个CoulumnLayout,然后全是列定义。前面3个列的columnWidth都是0.3,再加上第4列的columnWidth就是1.2了,已经超过1了,因而从第4列开始是第2行了。第2行只有2个列,columnWidth的总和才0.6,再加上第3行的第1列的columnWidth才是0.85,还不到1,所以会出现图3的错误。解决办法就是增加一个空列来补足宽度:
{columnWidth:.3,layout: 'form',border:false,items: [
{xtype:'panel',html:' ',height:26}
]},
注意到没有,在列中使用了一个高度为26,内容为一个空白字符的panel作为控件。为什么要这样呢?做个测试,把" ;"和高度先去掉,看看效果,问题依然如故。奇怪吧?这还是和CSS有关,一个空的DIV不占任何宽度和高度,所以在实际的HTML源代码中根本没把增加的columnWidth算进去。居然这样,就加回" ;"看看。奇怪了,图3的结果怎么还是错误的?不过和图2有些不同了,第3行第1列的位置偏下了。其实又是CSS作怪,高度不足引起的,再加入"height:26"就一切正常了。
发表评论
-
extjs+air开发
2009-06-24 21:41 3038一、准备工作 1、下载adobe air install和ad ... -
带复选框(checkbox)的树
2009-03-20 15:05 1870该例子可以满足我们的一般需求。很多时候我们需要用到带check ... -
ExtJs中解决IE的min-width问题
2009-02-27 22:14 790当使用了ExtJs后,脚本documentElement.cl ... -
Ext中的动画处理
2009-02-27 22:13 1184CartoonExt.js //图片宽 var WIDTH=3 ... -
Ext.Ajax
2009-02-27 22:12 1198其实Ext.Ajax的使用并不 ... -
使用百分比设置GridPannel宽度的方法
2009-01-14 15:03 1662使用过Ext的Gird(网格)功 ... -
巧妙运用NumberField
2009-01-14 15:02 4595巧妙运用NumberField: 只允许字段输入数字. v ... -
Ext.ux.TabCloseMenu插件的使用
2009-01-14 14:59 1583tab在ext里很常用,在点开N个tab后,是否能通过右键菜单 ... -
直接在页面上显示富文本编辑器
2009-01-14 14:58 3296<html> <head> ... -
带右键菜单的树
2009-01-14 14:58 1208ext树形菜单加上右键菜单是不是很酷,ext当然也能实现。 树 ... -
EXT 二级联动下拉列表
2009-01-14 14:57 2583page.html代码如下 <!DOCTYPE HTM ... -
带搜索功能的grid分页实例
2009-01-09 13:43 1578本实例将在带分页的表格基础上进行扩展,增加搜索功能。由于本实例 ... -
带分页的表格
2009-01-09 13:43 1045主要介绍如何使用ext的表格控件实现ajax分页。 上一节讲了 ... -
树形下拉框
2009-01-09 13:43 2591<!DOCTYPE HTML PUBLIC " ... -
支持手写输入及联想功能的下拉框
2009-01-09 13:42 2904<!DOCTYPE HTML PUBLIC " ... -
让ext项目步入对象化编程
2009-01-09 13:39 843对于一些刚刚接触javascript的人来说大部分都在使用面向 ... -
grid的继承类,构建方便的grid操作
2009-01-09 13:13 1461在以往建立grid的时都要 ... -
ext异步加载树的子节点
2009-01-09 13:12 1982<script> Ext.o ... -
可拖拽的tree实际应用
2009-01-09 12:54 1826ext提供的树本身就有拖 ... -
可直接编辑节点的tree
2009-01-09 12:03 1714其实代码并不是很复杂,只是在原有的树形添加一个TreeEdit ...
相关推荐
例如,可以在center区域使用GridPanel布局,同时在west区域使用ColumnLayout。NestedLayoutPanel的使用方法与BorderLayout类似,只是在配置上更加灵活,可以适应更复杂的布局需求。 在使用EXT布局时,还需要注意...
Qt Quick的Layouts模块提供了一些方便的布局组件,如ColumnLayout和RowLayout,可以确保元素在不同屏幕尺寸下都能正确对齐和缩放。 6. **前后端分离**:在实现客户端程序的前后端分离时,通常会使用模型-视图-控制...
ExtJS是一个开源的JavaScript库,主要用于...通过本笔记的学习,可以掌握ExtJS在前端开发中的应用,理解各个组件和管理器的使用方法,以及一些针对特定浏览器的布局技巧,为创建美观、高效的用户界面打下坚实的基础。
3. **流式布局**:为了实现自适应换行,开发者可能使用了FlowLayout或自定义的ColumnLayout。FlowLayout是一个非官方的Android库,它允许子视图按照行优先的方式排列,而ColumnLayout则可能是专门为实现这种功能定制...
通过使用`Layout`模块,我们可以创建在各种设备上都能良好显示的用户界面。 ```qml import QtQuick.Layouts 1.0 ColumnLayout { anchors.fill: parent Rectangle { Layout.fillWidth: true Layout.minimum...
本文将详细介绍Ext2.0 FormPanel的使用,包括创建方法、控件配置以及布局管理。 首先,我们需要初始化提示信息功能和设置错误信息显示位置。通过`Ext.QuickTips.init()`启动快速提示功能,以便为表单中的控件提供...
- **使用方法**:添加子元素时,只需指定它们位于哪个区域,布局会自动将子元素放置到相应位置。 #### 3. 列布局(Column Layout) - **定义**:通过 `Ext.layout.ColumnLayout` 类定义,布局名称为 `column`。 - ...
EXT的布局系统是其灵活性的关键,包括Fit布局、Border布局、ColumnLayout等多种布局模式,可以帮助开发者根据需求构建各种复杂界面。通过API文档,开发者可以深入理解每种布局的工作原理和使用场景。 CHM(Compiled...
在上面的代码中,我们使用ColumnLayout将各个组件垂直排列,形成一个简洁的登录表单。当用户点击“登录”按钮时,可以编写JavaScript或C++代码来处理登录逻辑,例如验证用户名和密码的有效性。 关于界面跳转,Qt ...
- **`ColumnLayout`**: 介绍了一种列布局策略。 **3.4 Grid类** - **`GridPanel`**: 介绍了一个网格面板组件,用于展示表格数据。 - **`EditorGridPanel`**: 介绍了一个支持编辑的网格面板组件。 - **`...
在这个“extjs3.0例子”中,我们将深入探讨EXTJS的核心概念、常用对象及其使用方法。 EXTJS的核心在于它的组件模型,其中包括窗口(Window)、面板(Panel)、表格(Grid)、表单(Form)、菜单(Menu)等。这些...
在FormPanel中,我们可以添加FieldSet来分组相关的表单元素,或者使用ColumnLayout或FitLayout等布局管理器来调整表单组件的显示方式。 数据绑定是EXT表单的一大特色,它允许表单组件与数据模型之间实时同步。这...
9. **布局(Layouts)**:为了组织和定位界面元素,QML提供了布局管理器,如`ColumnLayout`和`RowLayout`,用于按列或行排列组件。 在压缩包文件`MyCalendar`中,可能包含了实现这些功能的QML源文件,以及可能的CSS...
本篇文章将深入探讨QmlCircularProgress的使用方法和相关知识。 首先,我们来理解QmlCircularProgress的基本结构。QmlCircularProgress是QtQuick.Controls模块的一部分,通过`import QtQuick.Controls 2.x`引入,...
mGui用于简化Maya GUI编码的模块基本mGui是一个Python模块,用于使用Maya的内置GUI小部件简化GUI创建。 因此,它不能替代更复杂的功能(例如PyQT或PySide),而是一种可以更快,更可靠地制作简单UI(并且无需在较早...
3. **创建UI组件**:使用gwt-ext库创建各种组件,如Grid、FormPanel、ComboBox等,并了解它们的属性、方法和事件处理。 4. **布局管理**:学习gwt-ext提供的布局管理器,如FitLayout、BorderLayout、ColumnLayout,...
6. **布局管理**:理解各种布局管理器,如AbsoluteLayout、BorderLayout、ColumnLayout、FitLayout等,以及如何在应用中灵活使用它们。 7. **数据绑定**:Gwt-Ext的数据绑定机制,包括模型(Model)、视图(View)...
ColumnLayout { MyModel { id: model } Label { text: model.count } Button { text: "Increment" onClicked: model.count += 1 } } } ``` 这个例子展示了如何在Python和QML之间传递数据,以及如何响应...
12.6.1 使用绘制对象的方法 257 12.6.2 绘制线条 258 12.6.3 绘制字符 259 12.6.4 绘制填充图形 260 12.6.5 绘制图像 261 12.7 本章小结 261 第13章 SWT的高级应用.. 262 13.1 打印支持 262 13.1.1 ...