隨筆 - 115  文章 - 481  trackbacks - 0
          <2008年3月>
          2425262728291
          2345678
          9101112131415
          16171819202122
          23242526272829
          303112345

          常用鏈接

          留言簿(19)

          隨筆檔案(115)

          文章檔案(4)

          新聞檔案(1)

          成員連接

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          11.1.1 簡單菜單應用
               菜單包括很多種,比如下拉菜單、分組菜單位、上下文件彈出菜單位,菜單上的內容包括文件、單選框、按鈕等。對于ExtJS來說,菜單的實現非常簡單,我們來看下面示例。
            Html代碼如下:

          歡迎進入管理系統<br/>
          <div id="menu"></div>
           我們想在id為menu的這一區域里面顯示系統的主菜單,應用ExtJS,則可以使用下面的javascript代碼實現:
           
          var btn1=new Ext.Button({
           text:
          "文件",
           menu:[
            
          {icon:"open.jpg",text:"打開"},
            
          {icon:"save.jpg",text:"保存"},
            
          {text:"關閉"}]}
          );
          var btn2=new Ext.Button({
           text:
          "編輯",
           menu:[
            
          {text:"復制"},
            
          {text:"拷貝"},
            
          "-",
            
          {text:"查找"},
            
          {text:"替換"}
           ] 
          }
          )
          var toolbar=new Ext.Toolbar({
           renderTo:
          "menu",
           items:[btn1,btn2]
          }
          );




             在上面的代碼中,我們首先創建了兩個普通的按鈕Button,注意構造參數中的配置選項除了text以外,還包含一下menu屬性,menu屬性是一個數組,數組中的每一項就是一個菜單項;兩個包含了菜單的按鈕創建完以后,我們使用new Ext.Toolbar直接創建一個簡單工具欄控件,指定工具欄渲染到id為menu的DOM元素,并且工具欄中包含兩個按鈕。執行上面的代碼,可以得到如圖11-1所示的效果。
           
            圖11-1 鼠標移到“文件”按鈕時顯示的下拉菜單

           
            圖11-2 鼠標移到“編輯”按鈕時顯示的下拉菜單

          11.1.2 手動創建及顯示菜單
            當然,對于給包含menu屬性的控件添加菜單非常容易,由于這些控件已經自動添加了菜單處理及顯示的代碼。對于沒有提供菜單支持的控件來說,我們可以直接使用ExtJS中的菜單組件Ext.menu.Menu來實現顯示菜單。
            在ExtJS中,菜單項由Ext.menu.Item類定義,該類直接繼承自Ext.menu.BaseItem,我們只需創建一個菜單Menu對象,然后往Menu對象中加入菜單項,然后在需要顯示菜單的時候調用菜單Menu對象的show或showAt方法即可在指定位置顯示菜單。我們再來看下面的示例。
            假如頁面中html代碼如下:
          <br/>
          <div id="hello" style="cursor:pointer">顯示菜單</div>

            現在我們要實現在用戶點擊“顯示菜單”這一個div時,顯示一個包含“文件”、“編輯”等項的下拉菜單,下面的javascript代碼實現了該功能:

          var menu=new Ext.menu.Menu();
           menu.add(
          {
            text:
          "文件",
            menu:[
             
          {text:"打開"},
             
          {text:"保存"},
             
          {text:"關閉"}]
            }
          ,
            
          {
            text:
          "編輯",
            menu:[
             
          {text:"復制"},
             
          {text:"拷貝"}]
            }

           );
           
          var h=Ext.get("hello");
           h.on(
          "click",function(e){
            menu.show(h);
           }

           );


            在上面的代碼中,我們首先使用new Ext.menu.Menu()創建了一個菜單對象,然后再調用菜單對象的add方法來加入菜單項,add方法可以一次性加入多個菜單項,每一個菜單項可以是一個Ext.menu.Item對象,也可以是用于構造Ext.menu.Item的配置對象,這里直接使用的是菜單項描述對象。在菜單項中,我們又使用menu屬性來定義了“文件”、“編輯”兩個菜單項的二級菜單。
            在定義完了菜單并加入菜單項后,我們定義了hello這個DOM元素的click事件響應函數,在響應函數中調用菜單對象menu的show方法來顯示菜單,show方法中包含一個參數,表示讓菜單顯示在哪兒。
          執行上面的程序,點擊頁面中“顯示菜單”這個DIV,則會看到如圖11-3所示的菜單顯示效果。
           
            圖11-3 手動創建及顯示菜單

          11.1.3 ExtJS中的菜單項
            在ExtJS中,菜單項提供了普通菜單項、文本菜單項、單選、復選等幾種基本的菜單項,我們前面兩個例子中涉及到的都是普通的菜單項。下面我們再通過一個示例來簡單地對文本菜單項、單選及復選菜單項有一個簡單的了解,代碼內容如下:

          var menu=new Ext.menu.Menu();
           menu.add(
          {
            text:
          "字號",
            menu:[
             
          new Ext.menu.CheckItem({text:"",group:"font"}),
             
          new Ext.menu.CheckItem({text:"",group:"font"}),
             
          new Ext.menu.CheckItem({text:"",group:"font"})
             ]
            }
          ,
            
          {
            text:
          "字體",
            menu:[
             
          new Ext.menu.CheckItem({text:"加粗"}),
             
          new Ext.menu.CheckItem({text:"斜體"})
             ]
            }
          ,
            
          "-",
            
          new  Ext.menu.TextItem("文本菜單項1"),
            
          "文本菜單項2"
            
           );
           
          var h=Ext.get("hello");
           h.on(
          "click",function(e){
            menu.show(h);
           }

           );



             在上面的代碼中,首先使用new Ext.menu.Menu()來創建了一個菜單對象,在使用add方法添加菜單項的時候,“字號”菜單的二級菜單項是CheckItem對象,里面通過設置group屬性使得該菜單項成為單選菜單項,因為“字號”同一時刻只能選擇一種;“字體”菜單的二級菜單項同樣是使用CheckItem來創建,由于沒有指定group屬性,因些該菜單項就是復選菜單項。另外,還使用new  Ext.menu.TextItem來創建文本菜單項,文本菜單項也可以直接使用字符串代表,比如“文本菜單項2”,而文本內容為“-”的文本菜單項表現出來會成來菜單項分隔符。執行上面的程序,點擊頁面中“hello”這個DIV時,將會顯示菜單,效果如圖11-4與圖11-5所示。
           
            圖11-4 單選菜單項效果
           
            圖11-5 復選菜單項效果
          11.1.4 處理菜單事件
            對于普通的菜單項來說,要設置事件響應函數非常簡單,只需要在菜單項添初始化的時候,在配置選項中添加上handler屬性及值即可。比如下面包含了事件處理器的菜單項:

          function openFile()
          {
           Ext.MessageBox.alert(
          "提示","打開文件");
          }

          var btn1=new Ext.Button({
           text:
          "文件",
           menu:[
            
          {icon:"open.jpg",text:"打開",handler:openFile},
            
          {icon:"save.jpg",text:"保存"},
            
          {text:"關閉"}]
          }
          );



          在“文件”菜單項下面的“打開”菜單項中,設置了handler屬性,因此點擊該菜單項則會執行openFile函數。
          11.1.5 其它菜單項
            除了普通菜單項、文本、單選菜單項、復選菜單項以外,ExtJS中的菜單項理論上還可以是其它任何控件,或者說頁面中大部份DOM節點都可以用來做為菜單項上面的內容。ExtJS提供了一個Ext.menu.Adapter類來支持把其它控件轉換成菜單項,并提供了兩個常用的用于選擇日期及顏色的菜單,即Ext.menu.DateMenu與Ext.menu.ColorMenu,這兩個菜單里面都只有一個菜單項,即Ext.menu.DateItem與Ext.menu.ColorItem。下面簡單看示例:

          var btn1=new Ext.Button({
           text:
          "文件",
           menu:[
            
          {icon:"open.jpg",text:"打開"},
            
          {icon:"save.jpg",text:"保存"},
            
          {text:"關閉"}]}
          );
          var btn2=new Ext.Button({
           text:
          "編輯",
           menu:[
            
          {text:"復制"},
            
          {text:"拷貝"},
            
          "-",
            
          {text:"查找"},
            
          {text:"替換"}
           ] 
          }
          );
          var btn3=new Ext.Button({
           text:
          "其它",
           menu:[
            
          {text:"選擇日期",menu:new Ext.menu.DateMenu()},
            
          {text:"選擇顏色",menu:new Ext.menu.ColorMenu()}
           ] 
          }
          );
          var toolbar=new Ext.Toolbar({
           renderTo:
          "menu",
           items:[btn1,btn2,btn3]
          }
          );



            在上面的代碼中,btn3這個按鈕下面包含“選擇日期”及“選擇顏色”兩個菜單項,選擇日期下的菜單是一個DateMenu對象,“選擇顏色”下的菜單是ColorMenu對象。執行上面的程序,當點擊其它按鈕的時候,可以得到如圖11-6與11-7所示的日期選擇及顏色選擇菜單。
           
            作者:冷雨  本文摘自《ExtJS實用開發指南》,該指南當前在北京、深圳、成都、重慶、沈陽等城市均已經可以直接到服務點購買,具體聯系方式:http://www.vifir.com/stations.html 。

          posted on 2008-03-26 09:17 簡易java框架 閱讀(2334) 評論(2)  編輯  收藏

          FeedBack:
          # re: ext中的菜單基本應用[未登錄] 2008-03-26 09:42 BeanSoft
          不錯,挺實用的!  回復  更多評論
            
          # re: ext中的菜單基本應用 2008-03-26 10:44 冷雨

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 三穗县| 察哈| 新巴尔虎右旗| 溧水县| 阿鲁科尔沁旗| 岢岚县| 新津县| 弥渡县| 同仁县| 定结县| 泸西县| 惠来县| 德安县| 德化县| 巩留县| 华池县| 当涂县| 灵台县| 会昌县| 苏尼特右旗| 曲麻莱县| 云安县| 崇明县| 黄平县| 乌拉特前旗| 林西县| 长岛县| 海晏县| 神池县| 乐安县| 陆良县| 西吉县| 义乌市| 南昌县| 咸宁市| 凌云县| 旌德县| 林西县| 尼木县| 比如县| 宜州市|