今天在写extjs代码时发现了个extjs的一个很隐秘陷阱,就是在采用borderlayout的布局时,当你想更换这个布局里面的组件时,会报一个节点插入异常的错误,自己感觉很奇怪,因为自己一般通过直接获取一个panel,然后直接调用该panel的add方法可以直接将组件添加其中,但采用borderlayout布局时却始终报错,到底问题出在哪里?
google了下发现没什么好的解决方案,最后还是自己老老实实去看文档,发现了下面一些话,忽然间恍然大悟
If the Container was configured with a size-managing layout manager, the Container will recalculate its internal layout at this time too.
Note that the default layout manager simply renders child Components sequentially into the content area and thereafter performs no sizing.
组件父容器会根据添加进去的组件大小计算,并做dolayout,下面的语句是关键语句
Warning:##
Components directly managed by the BorderLayout layout manager may not be removed or added. See the Notes for BorderLayout for more details.
用borderlayout布局管理器管理的组件不会直接remove或者add,接下来看看为什么这样以及如何解决这个问题?
The regions of a BorderLayout are fixed at render time and thereafter, its child Components may not be removed or added.To add/remove Components within a BorderLayout, have them wrapped by an additional Container which is directly managed by the BorderLayout. If the region is to be collapsible, the Container used directly by the BorderLayout manager should be a Panel.
原来布局管理器里面的组件在渲染时就会被固定,解决组件添加的问题可以采用包装的方式,即在布局管理器的每个部分(例如west,east)包装一个panel,每次添加组件时,可以直接获取外层的panel,然后通过它来实现添加就可以了
这样问题就可以顺利解决!
分享到:
相关推荐
在本篇文章中,我们将深入探讨如何在实际项目中使用ExtJS 3.1的组件。 首先,`css`目录包含了ExtJS 3.1的样式文件。这些CSS文件用于定义组件的外观和布局,包括颜色、字体、边距、边框等。在使用过程中,我们需要...
extjs4动态添加表头字段、删除、增加记录!
在ExtJS中,树形(Tree)组件是一种用于展示层级数据的强大工具,它允许用户以树状结构浏览和操作数据。然而,在处理大量数据时,一次性加载所有节点可能导致页面响应变慢,这时就需要引入分页功能。"Extjs树分页...
在 ExtJS 3 里生成表的几个框架组件,ExtJS4 大多生成 div,这使得 CSS classes 将会失败。ExtJS4 已完全重新写 grid 组件,tree 也被更新,所以从版本 3 到 4 大部分的属性改变了。 在 ExtJS4 中,API 也发生了很...
Extjs4的textfield控件竟然没有tooltip悬浮提示,这应该算是个bug吧。网上查了很多,也没有方案。后来自己通过查询并整理出这个方案,终于实现了。 思想如下: 在textfield渲染时注册mouseover事件,然后在其中调用...
6. **可扩展性**:EXTJS 4的设计使得树形表格组件易于扩展,你可以添加自定义的行为、插件,甚至创建自己的节点类型。 在实际应用中,我们可以通过以下步骤来使用EXTJS 4的树形表格组件: 1. **创建Store**:定义...
4. **安装ExtJS支持**: 在Spket中,需要为ExtJS 3.0添加支持。这通常涉及到在IDE中导入ExtJS的库文件,并配置相应的代码助手和自动完成。 5. **创建项目**: 创建一个新的Spket项目,然后将你的ExtJS 3.0代码文件...
EXTJS 是一款基于JavaScript的富客户端应用开发框架,由Sencha公司开发,它提供了一整套组件化的用户界面元素和强大的数据绑定功能。在EXTJS 中,上传组件是用于实现文件上传功能的关键部分,这对于创建交互性强、...
通过研究和理解"ExtJS日期多选组件源码",开发者可以深入学习ExtJS组件设计、事件处理、数据绑定等核心概念,并能进一步定制适合自己项目需求的日期选择组件。这样的组件对于提高开发效率和用户体验具有积极的意义。
extjs各种组件的详细实现及各种扩展归纳总结,包括各种grid,tree,布局,表单,ajax,弹出框等
EXTJS4自学手册——EXT数据结构组件(创建一个Model) EXTJS4自学手册——EXT数据结构组件(Model数据验证,数据交互) EXTJS4自学手册——EXT数据结构组件 EXTJS4自学手册——EXT数据结构组件(proxy代理类之客户端...
1. **下载ExtJS组件示例**:首先,你需要从官方或者其他可靠的源获取ExtJS的组件示例代码。这些示例通常包括HTML文件、JavaScript文件和可能的CSS文件,它们展示了如何在实际项目中使用各种组件。 2. **创建Eclipse...
4. **布局和容器组件**:EXTJS的布局管理是其一大特色,扩展组件可能会提供更复杂或独特的布局方式,如瀑布流布局、可拖拽布局等,适应不同设计需求。 5. **交互和行为组件**:这部分组件可能包括自定义的拖放功能...
1. **Portlets**:Portlets是Portal中的基本单元,它们是可配置的、可拖动的、可调整大小的组件,可以包含任何EXTJS组件,如表格、面板、按钮等。Portlets之间可以通过拖放操作进行重新排列。 2. **Portal Column**...
4. **注重组件复用性**:在设计和实现组件时,考虑到未来可能的应用场景,增强组件的通用性和可复用性。 综上所述,正确理解和运用ExtJS组件扩展的两个层次,不仅能够帮助开发者构建高效稳定的Web应用,还能显著...
4. **使用新组件**: 在表单中,我们可以像使用普通DateField一样使用我们的ClearableDateField。 ```javascript Ext.create('Ext.form.Panel', { items: [{ xtype: 'clearabledatefield', fieldLabel: '日期' ...
这个中文文档是EXTJS4的官方文档翻译版,为开发者提供了详细的API参考和教程,帮助理解EXTJS4的各种组件、功能和工作原理。 EXTJS4的核心特性包括: 1. **组件化**:EXTJS4引入了基于MVC(Model-View-Controller)...
### Extjs自定义组件——下拉树:深入解析与实现 在现代Web开发中,Extjs作为一款功能强大且灵活的框架,深受开发者喜爱。它提供了丰富的UI组件库,能够帮助开发者快速构建复杂的用户界面。其中,自定义组件是Extjs...
在ExtJS中,树形组件(TreePanel)是一个常用的功能,用于展示层次结构的数据。当树形组件结合复选框时,可以实现用户对节点的选择操作,如全选、反选、子选父以及父选子。这些功能在数据管理、权限分配等场景中非常...