Tree也是XUL中的复杂控件之一,理解XUL中的tree要注意区别传统概念中的treeview,因为这里的tree除了可以实现treeview,还有一个重要的功能,就是实现DataGrid。
使用tree来实现DataGrid
看下面例子:
<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
<window id="findfile-window"
title="Find Files"
orient="horizontal"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<tree id="tree1" flex="1">
<treecols>
<treecol id="nameColumn1" label="Name" flex="1"/>
<treecol id="addressColumn1" label="Address" flex="2"/>
</treecols>
<treechildren>
<treeitem>
<treerow>
<treecell label="joe@somewhere.com"/>
<treecell label="Top secret plans"/>
</treerow>
</treeitem>
<treeitem>
<treerow>
<treecell label="mel@whereever.com"/>
<treecell label="Let's do lunch"/>
</treerow>
</treeitem>
</treechildren>
</tree>
</window>
1.tree表示DataGrid的开始
2.treecols表示列集合,列的标题可以指定在treecol中(label属性),可以用flex属性来控制列宽,treecol必须设置id属性,用于控制该列显示与否
3.treechildren表示行集合
4.右上角的按钮可以选择隐藏或显示列,可以设置tree的hidecolumnpicker
=true来隐藏这个按钮,可以设置treecol的hidden
="true"来选择某一列默认不显示
5.单击鼠标可以选中某一行,也可按住shift或ctrl来选中多行,如果只能单选一行,需要设置tree的seltype
="single"
6.如果要允许列可拖动(点击表头,拖动,可交换列的位置),设置tree的enableColumnDrag
="true"
7.如果想要改变列宽,在两个treecol标签之间加上<splitter class="tree-splitter"/>
效果:
用tree来实现TreeView
分级树是通过在某个treeitem中嵌套treechildren来实现的。
<tree flex="1">
<treecols>
<treecol id="firstname" label="First Name" primary="true"
flex="3"/>
<treecol id="lastname" label="Last Name" flex="7"/>
</treecols>
<treechildren>
<treeitem container="true" open="true"
>
<treerow>
<treecell label="Guys"/>
</treerow>
<treechildren>
<treeitem>
<treerow>
<treecell label="Bob"/>
<treecell label="Carpenter"/>
</treerow>
</treeitem>
<treeitem>
<treerow>
<treecell label="Jerry"/>
<treecell label="Hodge"/>
</treerow>
</treeitem>
</treechildren>
</treeitem>
</treechildren>
</tree>
- 在需要分级的treeitem元素中,设置containter属性为"true"。这样就允许用户可以通过双击来打开和关闭内部的行。通过设置open属性为"true"或"false",就可以设置初始状态下内部行的打开和关闭。
- 将表头中的主要列设置primary属性,这样就可能在有分级情况的这一列单元格的前面显示一个小三角或加号。一旦某列被设为primary,用户是无法关闭的。
- 在某个需要分级的treeitem中嵌入treechildren元素。注意不要放在treerow中,那样做无效。
效果:
自定义view
这因该是我们最常用的,从数据库中取出数据源后,显示在DataGrid或treeview中,对于这样的tree,只需要定义columns,treechildren留空:
<tree id="my-tree" flex="1">
<treecols>
<treecol id="namecol" label="Name" flex="1"/>
<treecol id="datecol" label="Date" flex="1"/>
</treecols>
<treechildren/>
</tree>
在这里,数据源是一个对象,这个对象必须实现nslTreeView接口(这个还不太理解。。。),可以用javascript来实现这个对象,如果一个页面中有多个tree,需要为每一个tree写一个treeView对象。
<script>
var treeView = {
rowCount
: 10000, //设置总行数
getCellText
: function(row,column){//设置数据
if (column.id == "namecol") return "Row "+row;
else return "February 18";
},
setTree: function(treebox){ this.treebox = treebox; },
isContainer: function(row){ return false; },
isSeparator: function(row){ return false; },
isSorted: function(){ return false; },
getLevel: function(row){ return 0; },
getImageSrc: function(row,col){ return null; },
getRowProperties: function(row,props){},
getCellProperties: function(row,col,props){},
getColumnProperties: function(colid,col,props){}
};
最后一步是把该对象指定到一个具体的tree
document.getElementById('my-tree').view = treeView;
</script>
tree的事件
1.选中tree的某一节点
<tree id="treeset" onselect
="alert('You selected something!');">
与listbox比较
1.listbox支持任意形式的内容,但tree只支持text和images
2.tree支持nested rows,listbox不支持。
分享到:
相关推荐
XUL(XML User Interface Language)是一种基于XML的用户界面描述语言,由Mozilla基金会开发,主要用于构建...如果你对如何使用这个XUL Tree有具体的问题,或者需要了解更多的细节,可以进一步查询相关教程或开源项目。
为了在最新的FireFox中使用XUL,请安装 来自 并启用 (不要被错误消息打扰,确定。)以在FireFox ESR(或seamonkey,pear moon或waterfox或其他REAL浏览器)中显示XUL,而不是受限制的每晚“ FFox”) NOW:在此处...
然而,需要注意的是,随着Web技术的发展,现代浏览器和框架(如React, Vue, Angular)提供了更丰富的界面开发工具,XUL在新项目中的使用已逐渐减少,但它仍然是一段历史和技术演进的重要组成部分。
这意味着开发者不仅可以在Firefox中创建复杂的扩展功能,还可以利用XUL来开发桌面应用程序,极大地拓展了XUL的使用范围和可能性。 #### 三、XUL开发基础 ##### 1. 扩展的基本结构 XUL扩展通常被打包成一个`.xpi`...
### XUL标签用法详解 #### 一、XUL文件结构与基本概念 XUL (XML User Interface Language) 是一种基于XML的语言,主要用于构建Mozilla应用的用户界面,如Firefox等浏览器插件。XUL文件的基本构成包括文件头、命名...
2. Thunderbird邮件客户端:也使用XUL来创建其用户界面。 3. 其他开源项目:许多开源软件和工具,如Songbird音乐播放器和SeaMonkey互联网套件,也采用XUL来构建其用户界面。 通过深入理解和掌握XUL,开发者可以...
XUL的优势在于其灵活性和可扩展性,开发者可以使用它来创建具有丰富功能和个性化设计的应用程序,而无需受限于特定的操作系统或设备。在XUL便签中,这一特性被充分利用,使得用户在不同操作系统上都能享受到一致的...
Mozilla的XUL(XML User Interface Language)提供了一种方法,允许JavaScript调用C++编写的组件,这就是XPCom(Cross Platform Component Object Model)。本篇文章将深入探讨如何在XUL环境中通过XPCom调用C++组件...
XUL开发手册.pdf XUL(XML User Interface Language)是一种基于XML的用户界面语言,主要用于构建跨平台的桌面应用程序。XUL开发手册.pdf是Firefox浏览器的开发手册,提供了关于XUL的开发指南和技术信息。 从给定...
XUL(XML User Interface Language)是一种标记语言,主要用于构建跨平台的用户界面,尤其是在Mozilla Firefox浏览器和Thunderbird邮件客户端等应用程序中广泛使用。这个“xul小程序”是您学习XUL过程中积累的心得...
XUL(XML User Interface Language)是一种基于XML的语言,主要用于构建跨平台的图形用户界面,尤其在Mozilla Firefox等浏览器的扩展开发中广泛应用。XUL文档的结构和HTML类似,但提供了更丰富的组件和定制性。以下...
事实证明XUL是成功的UI开发技术,本文以一个最简明的视角来向看官展示如何使用XUL来开发自己的定制UI程序。由于XUL及相关技术是基于WEB的,所以会HTML开发读者会更容易理解它的整个体系。当然XUL也用于桌面程序开发...
xul是XML User Interface language 的简写,是Mozilla基金会开发的一种基于XML的标记语言,一般用来构造程序的界面,典型的firefox就是这种的实践,目前XUL只能被Firefox的浏览器支持,它和js,css,html等理论上能够...
这篇学习笔记将带你走进Firefox插件(XUL)开发的世界,并对开发环境的搭建以及数据库的初步使用进行介绍。 首先,要开始Firefox插件开发,你需要搭建一个合适的开发环境。这通常包括安装Firefox开发者版浏览器,因为...
来定义一个窗口,它是XUL界面的基本容器。在示例中,`<window>`标签包含了一个`<browser>`元素,该元素定义了一个浏览器组件,它的`src`属性指定了加载的网页URL,`type="content"`表明这是一个内容类型,而`flex="1...
XUL在Firefox、Thunderbird等Mozilla基金会项目中广泛使用,允许开发者创建自定义的、跨平台的用户界面。 在"XUL最全帮助资料(part02)"这个主题中,我们主要会探讨以下几个核心知识点: 1. **XUL的基本结构与元素*...
XUL(XML User Interface Language)是一种标记...以上是XUL变量组件的一些核心概念和用法,它们共同构建了XUL界面的动态性和交互性。通过理解和掌握这些元素,开发者可以构建出功能丰富的浏览器扩展和桌面应用程序。
《XUL最全帮助资料》是针对Mozilla技术栈中的一项重要组成部分——XUL进行深入学习的资源集合。XUL(XML User Interface Language)是一种基于XML的用户界面语言,由Mozilla基金会开发,主要用于创建跨平台的图形...
标题:Mitschek_Bakkalaureatsarbeit_XPCOM_XUL-final-20100706 描述:这份文档深入介绍了XPCOM(跨平台组件对象模型)和XUL(XML用户界面语言),这是Mozilla应用的核心技术。作者Andreas Mitschek在2008/09学年的...
您将能够使用HTML构建桌面UI,同时仍然使用桌面UI方法。 建造 请注意,尽管该项目使用NodeJS和Electron,但Zuul的实际源代码是纯JavaScript,并不依赖于NodeJS。 NodeJS仅用于构建可分发内容,而Electron则用于对其...