TabPanel Basics (TabPanel 类的基础)

5、TabPanel控件使用 快速编写Demo创建tabPanel.html<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> <!-- 第一步引入Ext的样式文件 --> <link type="text/css" rel="stylesheet" href="ext-3.4.1/resources/ 阅读详情

摘要

这份教程目的在于对TabPanel类进行一次快速介绍。所提及的知识都是来自我对TabPanel范例、Ext源码和API文档的学习。到本文最后,你应该完成好一个Tab Panel,这个TabPanel能够:

  • 创建新tab,其内容来自一个URL。
  • 判断某个tab是否存在,有的话加载新内容。

步骤 1: 创建 HTML 骨架

我们将会用下列HTML,和Ext一齐构建一个基本的结构。复制这些内容到一个叫tptut.html的文件,并要求是运行在服务端的,当然 也要保证ext-all.css, ext-base.js, 和 ext-all.js这些Ext安装路径的正确。然后按照以下步骤创建tab_actions.js:

<html>
<head>
<title>TabPanel教程</title>
<!-- Ext CSS and Libs -->
<link rel="stylesheet" type="text/css" href="../include/ext2/
resources/css/ext-all.css"
/>

<script type="text/javascript" src="../include/ext2/adapter/
ext/ext-base.js"
>
</script>
<script type="text/javascript" src="../include/ext2/ext-all.js">
</script>
 
<!-- Custom CSS and Libs -->
<script type="text/javascript" src="./tab_actions.js">
</script>
<style>
#actions li {
margin:.3em;
}
#actions li a {
color:#666688;
text-decoration:none;
}
</style>
</head>
<body>
 
 
<ul id="actions" class="x-hidden">
<li>
<a id="use" href="#">Use Existing Tab</a>
</li>
<li>
<a id="create" href="#">Create New Tab</a>
</li>
</ul>
 
<div id="tabs"></div>
</body>
</html>

以上代码有两个地方的元素需要注意。我们将使用"actions"(动作列表)这种简易的实现来执行tab的创建。"tabs"的那个div将用于Tab面板中第一个默认tab的容器。

Step 2: Ext结构的构建

在刚才那个目录中创建一个文文件。就叫做作tab_actions.js,加入下面JavaScript:

 

Ext.onReady(function(){
// 包含actions的菜单
var tabActions = new Ext.Panel({
frame:true,
title: 'Actions',
collapsible:true,
contentEl:'actions',
titleCollapse: true
});
 
// 保持actions菜单的父面板
var actionPanel = new Ext.Panel({
id:'action-panel',
region:'west',
split:true,
collapsible: true,
collapseMode: 'mini',
width:200,
minWidth: 150,
border: false,
baseCls:'x-plain',
items: [tabActions]
});
 
// 主面板(已有tab)
var tabPanel = new Ext.TabPanel({
region:'center',
deferredRender:false,
autoScroll: true,
margins:'0 4 4 0',
activeTab:0,
items:[{
id:'tab1',
contentEl:'tabs',
title: 'Main',
closable:false,
autoScroll:true
}]
});
 
// 配置视图viewport
viewport = new Ext.Viewport({
layout:'border',
items:[actionPanel,tabPanel]});
});

上面的代码被套上一个Ext.onReady的函数,以防止页面元素未全部加载就执行代码了。接着要做的事情是将我们的动作列表(Action list)转换到名字为tabActions的那个面板,该命名是由contentEl (content element)(内容元素)这个配置项参数所指定的。

接着,创建一个父面板actionPanel来保持菜单面板。我们已tabActions 作为一个item项的参数。由于actionPanel会由视图Viewport的LayoutManager来页面定位,所以我们须在配置项对象中指定一个区域。

第三个步骤是创建TabPanel(Tab面板)本身。我们想在页面居中,即是对应于视图的中部。还要将一系列的tab配置项对象参数传入到面板 中。在这里例子中,参与内置渲染的只有一个tab,但是多个也是可以的。如能确定每个面板在页面上能够被当作容器使用,便可以成为该数组的元素。像当前的 情况,我们是把tabs作为第一个面板的内容元素。 要注意,我们这指出了tab的Id。这就是我们稍后获取的tab的依据。

最后,我们设置视图, 用于浏览器可视区域的控制。 所需要做的就是指定一个布局(layout)和什么要显示的组件。组件已经由视图的LayoutMangager(视图管理器)配置好适合放置的区域。

这时,你应该在浏览器观察到,包含Acitons菜单的两个格式化列在左边,tab面板占据了屏幕的其余位置。

Step 3: 创建Tab控制逻辑

现在我们所需的元素已经创建好了, 可以增加Tab面板的创建(creating)和更新(updating)方法。 在当前目录中新建三个页面以便我们的测试:

  • loripsum.html
  • sample0.html
  • sample1.html

这三分文件的实际内容无关紧要, 但最好是每份的内容应该有所不同,好让tab加载内容后区别开来。

打开tab_actions.js,在viewport创建的位置插入下列代码:

// 在中间的面板加入tab
function addTab(tabTitle, targetUrl){
tabPanel.add({
title: tabTitle,
iconCls: 'tabs',
autoLoad: {url: targetUrl, callback: this.initSearch, scope: this},
closable:true
}).show();
}
 
// 更新tab内容,如不存在就新建一个
function updateTab(tabId,title, url) {
var tab = tabPanel.getItem(tabId);
if(tab){
tab.getUpdater().update(url);
tab.setTitle(title);
}else{
tab = addTab(title,url);
}
tabPanel.setActiveTab(tab);
}
 
// 映射连接的id到函数
var count = 0;
var actions = {
'create' : function(){
addTab("New Tab",'loripsum.html');
},
'use' : function(){
// 演示页之间的轮换
updateTab('tab1','替换' + count + ' 次','sample'+(count%2)+'.html');
count++;
}
};
 
function doAction(e, t){
e.stopEvent();
actions[t.id]();
}
 
// body初始化后,viewport setup过后才能执行下面的代码
actionPanel.body.on('mousedown', doAction, null, {delegate:'a'});

函数addTab(...) 需要标题title和URL字符串两个参数,然后传递到tabPanel.add(...)里的配置项对象。 这会返回创建好的面板对象,上面的代码立即调用了show()方法显示内容。

函数updateTab(...) 需要多个tabId的参数,以便能检测这个tab是否存在。如果是,面板会获取Updater进行面板内容的更新。若然不是,会调用addTab(...)创建tab。

最后一个步骤, 增加一个actionPanel的监听器,来响应选区动作之后的事件后,执行相应的函数。先要说明的是,actions是一创建好的对象,对象可被认为是一种哈希表(HashTable)或是字典(Dictionary),一一映射了动作和方法两者。注意“键key”对应于HTML list项。 由于方法比较简单,我们就直接这里写好了。变量counter用于清晰显示tab之间的切换,没有其他特定的功能。

事件处理器(event handler)doAction(...)执行时会有两个参数传入:事件对象和目标对象,actions函数查找目标对象的id然后执行相应的方法。 当任意一个actionPanel's的组件被按下,将会触发mousedown的事件,侦听器立即通知已登记的事件处理器doAction(...)运行。 被按下的那个组件便是事件对象的目标。

总结

现在刷新tptut.html看看,已经是完成好的例子了。

点击Use Existing Tab的连接会更新第一个tab的内容。Create new Tab会创建一个新的已是按下的tab

[Ext JS3.9] 标签面板(TabPanel )介绍与开发 标签面板是RIA 类应用使用较多的组件, 因为其可以显示的内容比较多。 阅读详情

相关推荐

掌握TabPanel:设计高效用户界面的实践指南

本文还有配套的精品资源,点击获取 简介:TabPanel是一种用于组织和展示内容的用户界面组件,常见于软件和Web应用中。它通过一组选项卡实现多个视图的切换,优化了屏幕空间使用并提升了用户体验。本文将探讨TabPanel的基本结构、实现细节,以及如何在不同编程框架中构建和管理TabPanel组件,包括事件处理、布局管理以及动态扩展性。同时,还将提及 tabAdv.d...

weixin_32921023的博客 2018

HTML中tab选项卡制作

这次要做的是tab选项卡,也叫滑动门。具体是什么呢?如图 当我鼠标滑过上边标题栏的某一li时,下边显示的内容进行相应的改变。这个在门户网站经常用到。具体怎么做呢?其实很简单啦,只需要当我鼠标滑过某一标题li时,把下边的对应的div设置为block,其余的设置为display:none就可以了。下面说一下具体实现的细节. HTML部分: 在一个tabs的div里面放一个tabs-t

Moriarty的专栏 1万+

ExtJS TabPanel 标签操作

NULL 博文链接:https://rowen.iteye.com/blog/446163

【ExtJs】tabPanel标签页与修改标签页的内容

标签页是一个很重要的插件,正如《【mfc】标签页》(点击打开链接)在VC6中的地位,通过ExtJs中能够在网页中轻松地实现一个与客户端一模一样的标签页。 一、基本目标 创建如下的标签页,在底部的工具栏有两个按钮,一个可以增加标签页,增加的标签的内容就是当前的时间。这里只作为例子,一般标签页里面的内容,是放个iframe,或者通过无参数传递的ajax直接从别的网页中取,避免在javasc

编程记录,亲测有效 6106

Unity半透明物体景深失效?教你用双材质球方案完美解决(附完整Shader代码)

本文深入剖析了Unity中半透明物体导致景深效果失效的根本原因,即半透明物体默认不写入摄像机深度图。针对此问题,文章详细介绍了稳定高效的“双材质球”解决方案,通过为物体附加一个仅写入深度信息的不可见材质,完美修复景深效果,并提供了完整的Shader代码与实现脚本。

weixin_29010003的博客 381

使用patchelf与独立glibc解决Cursor/VSCode远程开发环境兼容性问题

本文针对Cursor/VSCode远程开发连接Ubuntu 18.04、CentOS 7等老系统时因GLIBC版本过低导致的兼容性问题,提供了一套安全高效的解决方案。核心思路是通过编译独立的glibc-2.28环境,并利用patchelf工具修改远程服务端的node可执行文件,使其优先使用新版glibc,从而在不升级系统库、不影响系统稳定性的前提下,完美解决远程开发环境“罢工”的难题。

weixin_28835789的博客 534

TabPanel多标签tab页加载同一个GridPanel显示不同的数据

<br />     前几天做了一个功能实现,在一个tabpanel上的多个tab标签存放同一个数据源里的的不同的数据,其中tab标签的title为自动生成的。其中存放数据里的容器为GridPanel,因为是同一个GridPanel,所以store是唯一一个,如里每个tab页都存放一个GridPanel的话,就需要同等量的store,这里会很麻烦。页面效果如下图:<br /> <br />其中,每个tab页里存放的不同的数据,加载数据的方式也为异步加载,点击事件触发时,加载数据。<br />上面四个tab标

sky08050025的专栏 1万+

PyQt5 + HFSS:给你的仿真脚本做个专属GUI界面(零基础搭建指南)

本文详细介绍了如何使用PyQt5为HFSS仿真脚本创建专属GUI界面,适合零基础用户快速上手。通过Python二次开发,实现参数可视化调整、进度实时监控等功能,大幅提升团队协作效率。文章涵盖环境配置、界面设计、HFSS集成到打包部署的全流程,是仿真工程师提升工作效率的实用指南。

weixin_42535720的博客 185

Ext4如何判断tabpanel是否已经存在某个tab

Ext4如何判断tabpanel是否已经存在某个tab   ext4如何判断tabpanel中是否已经存在某个tab,如果存在就激活这个tab,否则重新打开tab。     原理:在tabpanel添加tab的时候增加tab的id配置,然后通过Ext.getCmp获取控件,如果不存在则添加此tab,否则调用tabpanel的setActiveTab方法激活此tab。     示例代码

evilcry2012的专栏 1569

房产平台系统小程序源码

🏠 一键解锁购房新体验 🔓房产小程序 实现前端 发布二手房 租房 商品 求租 求购等信息;后台发布 新房,二手房租房 商品 写字楼 求租求购等房源信息;功能完善的一块房产小程序。

2401_84413757的博客 795

YOLOv11改进策略【损失函数篇】| arXiv2025 TeLU双曲正切指数线性单元 强梯度防消失 + 解析光滑稳训练,极速提升收敛与泛化

本文记录的是。TeLU(Hyperbolic Tangent Exponential Linear Unit)通过。本文利用TeLU激活函数,以x⋅tanhex统一实现正区间强梯度加速收敛与负区间持续梯度避免死神经元,全程保持解析光滑与极低计算开销,,显著提升深度网络在分类、检测、分割、时序任务中的收敛速度、精度与泛化鲁棒性。

Limiiiing的博客 224

TabPanel 基础 (TabPanel Basics )

Tutorial:TabPanel Basics (Chinese) From Learn About the Ext JavaScript Library Jump to: navigation, search Summary: 对Tab标签页的使用作简单地介绍 Author: Robin Percy (译者:Frank Cheung) Publis...

weixin_30360497的博客 103

线性代数 --- 置换矩阵 (Permutation matrix)

置换矩阵 - permutation matrix

松下J27录放机 3万+

25,Tabpanel控件使用

25,Tabpanel控件使yong

g710710的专栏 493

【虚幻引擎UE】UE5 阴影异常与优化

【虚幻引擎UE】UE5 阴影异常与优化解决方案合集

灵境引路人 3万+

什么是 SAPGUI 里的 Logon Group/Server

这意味着,不同的用户连接可以被分配到不同的应用服务器,以实现均衡的资源利用和降低某一服务器的负载压力。在这种配置下,欧洲的用户登录时选择“EUROPE_GROUP”,系统将自动选择一个位于欧洲的数据中心的服务器进行连接,这样不仅减少了网络延迟,还实现了服务器间的负载均衡。用户在 SAPGUI 中登录时,只需选择相应的 Logon Group(例如“FIN_GROUP”),系统就会自动将他们的连接请求分配到当前负载最小的应用服务器上,这种动态分配大大提升了系统的响应速度和稳定性。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1069

TabPanel、TreePanel、GridPanel几种布局方式常见的小问题

TabPanel 1、当tab标签超过一定浏览器的宽度时,使之自动加载滚动条autoScroll:true; 设置滚动条为自动,此前若需要看到效果必须要设置enableTabScroll属性为真 2、添加右键菜单:       使用extjs的右键组件TabCloseMenu { xtype:'tabpanel', ...

躺在向日葵上睡觉 445

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Ext TabPanel学习(2)-动态添加TabPanel标签

1)、动态添加TabPanel标签效果图[img]http://dl2.iteye.com/upload/attachment/0087/3623/63f28aa2-fa06-3b5a-8dff-1163f1830325.png[/img]js代码:Ext.onReady(function(){    Ext.QuickTips.init();    var tabsDemo = new Ext....

smile_wlxt的博客 1084

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

TabPanel的基本用法

TabPanel很常用,选项面板,代码如下: Ext.onReady(function(){ var tab = new Ext.TabPanel({ renderTo:Ext.getBody(), width:300, height:200 }); tab.add({ id:'tab1', title:'Tab1', html:'Tab1内容' }); tab

he_chenjun的专栏 7024

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

TabPanel的使用介绍

&lt;HTML&gt; &lt;HEAD&gt; &lt;TITLE&gt;使用EXT输出HelloWorld&lt;/TITLE&gt; &lt;!-- 导入extjs配置 … ... --&gt; &lt;link rel="stylesheet" type="text/css" href="./../ext/resources/css/ext-all

麦田守望者 743

Java tabpanel标签_GUI多标签页工具TabPanel Constructor的使用方法

本帖最后由 星之所在 于 2013-1-29 10:26 编辑学习GUI两天了,顺着dynamic斑竹的精华帖一路走来,感觉就像小学一年级直升了初一,在此感谢本论坛和dymaic斑竹的良苦用心,让我们这些菜鸟们茁壮成长。现在进入正题,dy斑竹有一篇名为《MATLAB在GUI中实现多标签页的方法》:http://www.matlabsky.com/thread-5187-1-1.html ,里面讲到...

weixin_42505032的博客 468

Ext.TabPanel

TabPanel不显示面板的标题和头部工具条。   1、主要配置项:      activeTab:初始激活的tab,索引或者id值,默认为none       autoTabs:是否自动将带有'x-tab'样式类的div转成tabs添加到TabPanel中,默认为false。            当该配置项设为true时,需要设置deferredRender为false,还必须使用appl...

程序员的天堂 647

tabpanel 使用问题

zha_zi的专栏 202

TabPanelLite 轻量级的Ext标签

[置顶] Lite-Ext 适合WebPage的轻量级Ext 在 google code 持续更新,这里停止   演示@google code 演示@google code        采用 Extjs tabpanel 的素材 重新编写,进行简化适合web page 开发.       皮肤AOL:...

{ focus : web } 156

Extjs 中Tabpanel使用以及tab切换事件

Extjs 中Tabpanel使用以及tab切换事件在使用extjs开发中我们有时候会使用到标签页这种组件用于显示多种分类的信息,这里将简单介绍一下怎么使用。 先看代码,具体是创建了一个窗口,这个窗口内再创建了一个TabPanel,其中第一个tab内部还嵌套了一个form表单。j={code:'代码',name:'名称'}; var win = Ext.create('Ext.window.Win

看山 看水 看世界 1万+
上一篇: Javascript的调试利器:Firebug使用详解
下一篇: Application Layout for Beginners (布局的初级入门)
solem
博客等级 码龄19年 0粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值