国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

Ext2.0頁面布局類初探

2024-07-21 02:14:01
字體:
來源:轉載
供稿:網友

Ext2.0正式版雖然還沒出來,但是官網上的例程還是令人興奮不已。內存泄漏的問題應該是解決了,布局類更新了,增加了新的東西,grid的功能更加強大,tabs也增加了循環按鈕,還增加了類似delphi action manager的action類,在反映速度上也有一定的提升,這些新功能確實很令人振奮,可惜正式版還沒出來,API也還沒出來,所以想立刻使用2.0版做開發的,會有一定的困難。本文的目的就是和大家一起探討一下2.0版的布局類,希望在API沒有出來之前對大家的開發有所幫助,還有就是希望大家提供一些反饋意見,以便完善這篇文章。多謝!

Ext2.0版的布局類,最大的改動是:

1、 取消了內容面板contentPanel類,代替的是panel類的。panel類中,會根據layout的定義不同自動生成布局樣式,這樣就不需要自己再去定義布局了,只要在panel定義中加入布局的定義就可以實現布局了。由panel類派生出formpanel、girdpanel、tabpanel、treepanel等子類,各子類中已根據自己的需要固定了不同的布局類型,例如在創建formpanel時會創建formlayout。

2、 增加Container類,并派生出viewpoint類作為全局布局的接口。

3、 取消了layoutManger類,增加了ContainerLayout類,而borderLayout類的父類也修改為ContainerLayout。

4、 BasicLayoutRegion類也取消了,因此它的子類LayoutRegion以及LayoutRegion類的子類SplitLayoutRegion都取消了。代替的是在borderLayout類下增加了Region類和SplitRegion類。

5、 在區域內再劃分區域的NestedLayoutPanel類也根據框架的改變而取消了。至于如何再劃分區域,請繼續閱讀本文。

6、 增加了AccordianLayout、AnchorLayout、CardLayout、CoulmnLayout、FitLayout、FormLayout、TableLayout等新的類。

7、 原有的用contentPanel可以做出的tab效果,現在則需要使用tabpanel實現。

隨著類的繼承關系的改變,布局的創建方法也做了很大的變動。我的看法是做這樣大的框架的修改主要原因解決內存泄漏的問題。

我們先來了解一下新的布局類的繼承關系:

 

從圖中我們可以看出Layout類獨立出來了,不再象1.1版那樣繼承自Observable類了。估計這樣修改是未來避免內存泄漏的(猜的,水平有限,所以請多見諒)。

下面我們來看看各個類的情況:

1、Observable類

Observable類和1.1版的相同,沒有修改,是一個抽象基類,為發布事件提供一個公共接口,其子類可通過addEvents方法增加事件。API可以直接參考1.1的API。

 2、Component類

Component類和1.1版的相同,沒有修改,是Ext組件的主要基類。API可以直接參考1.1的API。

 3、BoxComponent類

BoxComponent類和1.1版的相同,沒有改變,是需要使用盒子容器的可視化Ext組件的基類。API可以直接參考1.1的API。

 4、Container類

Container類是新增加的一個基類。其主要作用是管理容器里的布局對象,負責布局對象的創建與摧毀。它通過一個JSON結構(Ext.Container.LAYOUTS={})來保存布局對象,通過layout屬性值和items的JSON定義自動創建這些布局對象,并通過一個JSON結構記錄這些布局對象,這樣就可在面板對象生命周期內對其進行管理,防止布局中面板關閉時發生內存泄漏。Container類設置了布局中默認面板為panel,如果需要使用其它panel,則需要在items中進行定義。

 5、Viewport類

Viewport類也是新增的一個類,是Container類的子類。Viewport類其實就是將頁面body作為一個Ext對象,然后通過該對象管理body上的布局對象。Viewprot類的默認面板是panel面板,因為panel并沒有指定特定的布局,所以要通過layout屬性指定布局,并在items中定義的面板對象定義中加入該布局的定義。Layout屬性可選的范圍值為container、anchor、form、border、column、fit、accordion、card和table。

 6、Panel類

Panel類是新增的面板基類。其基本的屬性、方法和事件與1.1版的contentPanel相似,API可參考contentPanel的API。Panel類和contentPanel類最大的不同是可以根據layout屬性自動生成相應的布局,而不是和1.1版那樣定義布局,然后加入contentPanel對象。

在panel類中增加了一個很好的功能,就是工具欄定義不再是contentPanel的toolbar了,而是劃分成了tbar和bbar,tbar就是top bar,在面板頂部的工具欄,babr是bottom bar,在面板底部的工具欄,這樣就不用再為toolbar的位置犯難了,呵呵。

panel類也不再象contentPanel那樣本身就是一個tab面板,如果需要tab方式的面板,則需要用到新的tabPanel來定義。

 7、ContainerLayout類

ContainerLayout類是新增的一個容器布局類,是其它布局的類的基類,其作用主要是為子類提供基本的屬性、方法和事件:monitorResize(是否檢測窗口大小的改變)、activeItem(當前活動的對象)、layout(子布局的類型)、onLayout(顯示布局事件)、isValidParent(是否有有效的父節點)、renderAll(輸出內容)、renderItem(輸出某個子對象)、onResize(大小改變時間)、setContainer(設置容器)和parseMargins(取消外補丁)。

 8、BorderLayout

BorderLayout類保持了1.1版的屬性、事件和方法,只是其繼承對象變成了ContainerLayout類。雖然其內部運作方法不同,但是還是可以根據1.1版的API去定義BorderLayout對象。

9、anchorLayout類和formLayout類

anchorLayout類是新增的類,它的源代碼很簡單,主要功能就是定義一個顯示內容的空白區域。具體的應用看layout下的anchor.html文件看不出有什么特點,呵呵。

formLayout也是新增的類,繼承于anchorLayout,主要是為formPanle服務,創建formPanel時創建該布局,主要屬性為labelSeparator(標題分隔符)。

10、 ColumnLayout

ColumnLayout類是新增的類,替代1.1版的Ext.form.Column。代碼書寫方式比以前更簡單更方便。

11、 FitLayout類、Accordion類和CardLayout類

FitLayout也是新增的類,主要是創建一個適應容器大小的布局區域。沒什么特殊的屬性和方法。

Accordion類是FitLayoutd類的子類,主要是創建類似outlook bar的效果,這是一個令人相當興奮的功能,很多人估計早就盼望有這東西了。比使用Ext.ux.Accordion會方便很多。

CardLayoyt也是一個新增的類,但是沒有例子,所以不知道主要效果是什么。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 双辽市| 福州市| 普陀区| 鄱阳县| 新巴尔虎右旗| 定西市| 洪雅县| 安化县| 根河市| 阿瓦提县| 陆良县| 周至县| 富川| 铜鼓县| 沿河| 揭阳市| 汝阳县| 无为县| 红原县| 扶余县| 突泉县| 桃江县| 横山县| 延安市| 韩城市| 清涧县| 独山县| 昌图县| 吕梁市| 右玉县| 榆社县| 邮箱| 泽州县| 灵武市| 来安县| 黔南| 博兴县| 韶山市| 东乡| 祥云县| 晋城|