【Java究竟怎么玩?】

思考因为存在,存在所以思考

原创 ExtJS2.0开发与实践笔记[3]——Ext中的Menu收藏

在桌面程序gui开发中,menu是我们所经常使用的组件之一,它为用户提供了便利的程序功能选择项;而在web开发中,如何制作menu菜单效果一直是个很棘手的问题,如何让菜单通用,如何令菜单响应事件都需要我们自己动手来完成。所幸Ext也为我们提供了Menu组件,以Ext进行开发时,我们的不必要工作量将大大的减少。

Ext的Menu组件,是通过几个类的联合来使用的,这些类包括:Ext.Toolbar、Ext.menu.Menu、Ext.menu.Item、 Ext.menu.CheckItem,以及一些特殊类型的菜单或菜单项,例如菜单Ext.menu.DateMenu、菜单项Ext.menu.ColorItem。 

其中组织关系如下图:


Ext.Toolbar:
该类表示一个菜单条,构建函数接受两个参数,第一个是指定toolbar的容器(contrainer);第二个参数是包含全部按钮的数组。

Ext.menu.Menu:
该类表示一个菜单,包含菜单标识id和菜单中所含的菜单项。

Ext.menu.Item:
该类表示一个菜单项,菜单项包括一些属性,如上面的text和handler,根据不同菜单项类型,属性的使用略有不同,最基本的包括文本内容text和事件处理器函数handler/ checkHandler,具体请参考Ext 的API文档。

Ext.menu.CheckItem:
可选菜单项,从Ext.menu.Item继承而来,表示可选的菜单项。

Ext.menu.DateMenu:
特定的表示时间的菜单,从Ext.menu.Menu继承而来 。

Ext.menu.ColorItem:
特定的表示颜色选择的菜单项集合,可直接作为Menu构造函数中的items属性值。

下面我给出一个简单的用例代码:(Ext2.0配置方法见此)

MenuExt.js
/**
 * <p>Title: LoonFramework</p>
 * <p>Description:Ext的Menu用例</p>
 * <p>Copyright: Copyright (c) 2008</p>
 * <p>Company: LoonFramework</p>
 * <p>License: http://www.apache.org/licenses/LICENSE-2.0</p>
 * @author chenpeng
 * @email:ceponline@yahoo.com.cn
 * @version 0.1
 
*/

Ext.onReady(
function(){
    Ext.QuickTips.init();
    
//菜单选项
    var dateMenu = new Ext.menu.DateMenu({
        handler: 
function(dp, date){
            Ext.MessageBox.alert(
'日期选择''选择日期为: ' + date.format('Y/m/d'), '');
        }

    }
);
    
    
var colorMenu = new Ext.menu.ColorMenu({
        id: 
'colorMenu',
        handler: 
function(cm, color){
             
var rgb=Ext.color.hexToRGB(color);
             Ext.MessageBox.alert(
'颜色','R='+rgb.R+',G='+rgb.G+',B='+rgb.B, '');
        }

    }
);
    
    
function onItemCheck(item, checked){
        Ext.MessageBox.alert(
'选择''当前点选[' + item.text + '],状态为 ' + (checked ? 'checked' : 'unchecked'), '');
    }

    
    
var menu = new Ext.menu.Menu({
        id: 
'mainMenu',
        items: [
{
            text: 
'选项1',
            
//默认为选中
            checked: true,
            
//选中处理方式为onItemCheck      
            checkHandler: onItemCheck
        }
{
            text: 
'选项2',
            checked: 
true,
            checkHandler: onItemCheck
        }
{
            text: 
'选项3!',
            checked: 
true,
            checkHandler: onItemCheck
        }
//分隔菜单
 '-'{
            text: 
'单选菜单',
            menu: 
{
                items: [
{
                    text: 
'A',
                    checked: 
false,
                    group: 
'theme',
                    checkHandler: onItemCheck
                }
{
                    text: 
'B',
                    checked: 
true,
                    group: 
'theme',
                    checkHandler: onItemCheck
                }
{
                    text: 
'C',
                    checked: 
false,
                    group: 
'theme',
                    checkHandler: onItemCheck
                }
{
                    text: 
'D',
                    checked: 
false,
                    group: 
'theme',
                    checkHandler: onItemCheck
                }
]
            }

        }
{
            text: 
'日期选择',
            iconCls: 
'calendar',
            menu: dateMenu
        }
{
            text: 
'颜色选择',
            menu: colorMenu
        }
]
    }
);
    
//创建工具栏 
    var tb = new Ext.Toolbar();
    
//绑定到toolbar元素
    tb.render('toolbar');
    
//添加菜单
    tb.add({
        text: 
'Ext菜单测试',
        iconCls: 
'bmenu',
        
//注入菜单
        menu: menu
    }
);
    
    
    
    
}
);
// 自定义函数,用于从color event中提取所选数值
Ext.color = function(){
    
var result = '';
    
var bool = true;
    
var formatValue = function(obj){
        
if (bool) {
            
var obj = Array.prototype.slice.call(arguments, 0);
            result 
= String.format('{0}', obj);
        }

        bool 
= !bool;
        
return result;
    }

    
var hexTodec = function(hexchar){
        
return "0123456789ABCDEF".indexOf(hexchar.toUpperCase());
    }

    
return {
        value: 
function(obj){
            
return formatValue(obj);
        }
,
        hexToRGB: 
function(color){
            color 
= formatValue(color);
            
var now = color.replace("#""");
            
return {
                R: (hexTodec(now.substr(
01)) * 16+ hexTodec(now.substr(11)),
                G: (hexTodec(now.substr(
21)) * 16+ hexTodec(now.substr(31)),
                B: (hexTodec(now.substr(
41)) * 16+ hexTodec(now.substr(51))
            }

        }
,
        init: 
function(){
        }

    }
;
}

();
Ext.onReady(Ext.color.init, Ext.color);


MenuExt.html
<html>
    
<head>
        
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        
<title>MenuExt</title>
        
<!--加载ExtJs资源-->
        
<link rel="stylesheet" type="text/css" href="resources/css/ext-all.css"/>
        
<script type="text/javascript" src="adapter/ext/ext-base.js">
        
</script>
        
<script type="text/javascript" src="ext-all.js">
        
</script>
        
<!--我的js-->
        
<script type="text/javascript" src="MenuExt.js">
        
</script>
    
</head>
    
<body>
     
<div id="toolbar"></div>
    
</body>
    
</body>
</html>


运行效果图如下:

发表于 @ 2008年03月20日 09:53:00|评论(loading...)

新一篇: 珊瑚虫错案铸成,竟被判入狱三年罚金120万!此盖中华软件业之奇耻! | 旧一篇: 《叹今人无气节而作歌》

用户操作
[即时聊天] [发私信] [加为好友]
鹏凌三千(cping1982)
订阅我的博客
XML聚合  FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
鹏凌三千(cping1982)的公告
PageRank

本博评论删除规则如下:

1、辱骂性发言,无视其辱骂对象,一律删。

2、登录发表的评论,不违背第一条者一律不删。非登录发表的评论,过激者删。

3、若发生例外情况,则为CSDN博客系统自动删除。

泥巴团队博客联盟成员

声援SOFF|声援珊瑚虫:如果你是珊瑚虫用户,请坚决力挺声援珊瑚虫!

平生进退如飙风,一睨人才天下空。独向苍天横冷剑,何必生我惭英雄。

本人有效BLOG:

在51cto的部落格

在csdn的部落格

在baidu的部落格

音乐:

风姿花传

ドラグ.スレイブ

ヒカルの碁

Believe

世界で一番ヤバイ恋

あんなに一緒だった

焔の扉

深海の孤独

君は仆に似ている

The ugly and beautiful world

静かな夜に

逆蝶

永恒的雪

梅花

几多愁

微风细雨

妈妈的歌

精忠报国

谁是大英雄

随遇而安

明天会吹什么风

逍遥游

爱江山更爱美人

文章分类
收藏
    Java的PC游戏开发
    Java中的A*(A star)寻径实现
    Java仿雷电及其源代码
    Java制作的类祖码游戏-数字祖码
    Java实现窗体中角色逐渐风化效果
    Java版吃豆游戏
    Java版战棋(SLG)游戏AI及寻径处理入门
    人生如梦游戏间,RPG游戏开源开发讲座(JAVA篇)[2]——踏破红尘
    Java[伪]寻径追踪实现
    JAVA中[人工无脑]系统(chatbot)的实现
    Java中2.5D游戏(斜45度角)的设计与实现(1)
    Java中2.5D游戏(斜45度角)的设计与实现(2)
    Java中2.5D游戏的设计与实现(3)—八方走法实现原理及相关代码
    Java中2.5D游戏的设计与实现(3.5)—角色间对话脚本的实现
    Java仿太阁立志传5
    JAVA图形操作中FPS的计算(附带随机生成乱数球体用例)
    JAVA实现拼图游戏
    Java来做马里奥[0]—让精灵再次舞动
    Java来做马里奥[1]—木叶传承
    Java来做马里奥[2]—食不厌精
    Java来做马里奥[3]—杂兵登场
    Java桌面游戏巡礼——Java数独
    Java桌面游戏巡礼——Shade
    Java桌面游戏巡礼——国外Java游戏合集
    Java桌面游戏开发入门示例并源码集合
    Java模拟桌球打击处理及绘制
    Java汉诺塔测试
    Java游戏中延迟下载资源及调用示例
    Java游戏开发中应始终坚持的10项基本原则
    Java游戏开发中怎样才能获得更快的FPS?
    Java炸弹人实现及源码
    Java版AVG游戏开发入门[0]——游戏模式转换中的事件交互
    Java版AVG游戏开发入门[1]——CG的绘制
    Java版AVG游戏开发入门示例[3]——脚本引擎的制作及应用
    Java版SLG游戏开发入门[0]--让绘制的窗口响应鼠标事件
    Java版SLG游戏开发入门[1]--关于本系列
    Java版SLG游戏开发入门[2]--数据的读取及保存
    Java版推箱子(搬箱子)游戏开发入门示例及源码
    Java版桌面战棋游戏TLOH(The Legend of Heroes)开发预告
    人生如梦游戏间,JAVA游戏开源开发讲座[番外篇]之AVG开发——皮影
    人生如梦游戏间,RPG游戏开源开发讲座(JAVA篇)[0]——月晕础润
    人生如梦游戏间,RPG游戏开源开发讲座(JAVA篇)[1]——风云初现
    人生如梦游戏间,RPG游戏开源开发讲座(JAVA篇)[3]——邯郸学步
    人生如梦游戏间,RPG游戏开源开发讲座(JAVA篇)[4]——一步莲华
    人生如梦游戏间,RPG游戏开源开发讲座(JAVA篇)[5]——一树双花
    人生如梦游戏间,RPG游戏开源开发讲座(JAVA篇)[6]——走马观花
    史上最扯Java图形绘制(J2SE)之一JAVA动画效果
    沉寂的国人开源项目
    bo-blog(blog系统,php项目)
    DockPanel Suite [Microsoft .NET Framework Winform UI]
    Hocate web framework[web框架]
    Loonframework-DAO[持久层框架]
    Loonframework-GAME[游戏框架,尚未发布]
    Loonframework-WEB[web框架,尚未发布]
    Luntbuild(软件管理工具)
    magike(php博客)
    myseelite(p2p流媒体系统,c++项目)
    newxy(新坐标)[web框架]
    opencrx(crm系统)
    redlion(web框架)
    x2blog(asp.net博客系统)
    YOYOPlayer(音乐播放器)
    袋鼠egg(服务器)
    经典Blog
    # gzfqh的专栏 →底层代码研究(病毒及汇编)(RSS)
    # java 3D 游戏编程(RSS)
    ApoGames(德国某人的Java游戏作品展示)
    Peigen的个人blog(RSS)
    Struts框架应用
    Struts框架应用~
    千里冰封[JAVA 浓香四溢]
    枕善居,国内知名的VB及VB.NET资源博客
    爱枣报
    王大夫的颈椎病治疗博客
    网络安全圈子
    经典站点
    Google
    IBM中国站
    java2s
    JavaGame开发论坛
    JAVA开源大全
    Java爱好者
    Struts标签文档
    SUN
    SUN 中国社区
    一个海量的JSF资料聚合站
    中国IT实验室
    区域黑客,每天公布各国被黑的网站
    提供JSP,Servlets,Struts以及JSF等技术支持
    数据库专区
    看雪软件安全论坛
    知名的Java开源项目集合站
    黑客手册技术论坛
    偶的其它应用实例
    C#将图像文件压缩为AVI文件播放
    Java&.Net虚拟机精简(GreenJVM&GreenDotNet发布)
    Java图形程序水纹倒映效果
    Java输出竖排古典文字
    .NET在线漫画下载程序
    C#转换AVI文件为BMP文件
    ClassLoader调用外部jar包
    ExtJS2.0开发与实践笔记[0]——初识ExtJS
    ExtJS2.0开发与实践笔记[1]——ExtJS中的Dialog与Form
    ExtJS2.0开发与实践笔记[2]——Ext中的Layout
    ExtJS2.0开发与实践笔记[3]——Ext中的Menu
    ExtJS2.0开发与实践笔记[4]——Ext中的动画处理
    JavaFx实现(1)-渐变效果
    JavaFx实现(2)-随机图形绘制
    JavaStore(Java网络商店)初体验[封测申请已通过]
    Java中DAO的实现
    Java中Image翻转操作
    Java中将byte[]转为Blob对象
    Java中的A*(A star)寻径实现
    Java制作绿色软件(GreenJVM_0.1.0发布)
    JAVA图形操作类
    Java图形程序中的对话逐字显示实现
    Java实现任意文件在bmp中的隐藏与导出
    JAVA实现可设置背景的MDI窗口
    Java实现嵌入式数据库(文本数据库)代码实例
    Java实现类Windows导航栏
    Java嵌入式数据库LMini-0.1.2及其通讯录使用示例发布
    Java嵌入式数据库LMini-0.1.2及其通讯录使用示例发布
    Java正则表达式入门
    Java汇编类库LocalOS-0.1.1发布(内附本程序源码及Java版网游找CALL示例源码)
    JAVA版JAVA IDE环境(源码)
    Java版PageRank及网站收录情况查询代码
    JAVA线程池的简单实现及优先级设置
    Java自定义JSlider UI
    Java获得系统环境变量
    Java音乐播放类
    Loonframework-Inversion of Control(简称LIoC)-0.1.0版发布
    Loonframework-Inversion of Control(简称LIoC)-0.1.0版发布
    ResultSet转为实体对象
    SWT行,AWT/Swing也行系列(1)-实现半透明及不规则窗体
    在JTable中加载进度条及进行操作
    在Swing中使用Html标签
    在SWT中使用ChartDirector
    浅谈java.util.concurrent包的并发处理
    浅谈Java集合中Array(数组)的应用
    精简JRE体积
    通过exe启动class
    偶的文章
    《三国以后有几国》
    Java游戏开发中应始终坚持的10项基本原则
    中国本土化编程(汉语编程)之我见
    为大众而写的程序员小说——从《简单易懂的现代魔法》说开去
    从珊瑚虫事件,看为什么中国出不了比尔.盖茨
    佛与专家
    别争了!原来微点遭遇的是自然灾害!
    叹今人无气节而作歌
    国产开源项目的七宗罪
    对Hibernate使用之愚见
    对Java(J2SE PC)开发之怪现象之我见
    微点。赢乎?输耶?
    打油诗——我的梦想(御宅族之梦)
    浅论绿坝的[四大优点]
    浅谈命名规范[纯属强辩]
    消费者反映鸡蛋难吃后的37种回答方法
    灭了珊瑚虫,下一个是谁?
    率性而作无题歌一首
    百度对“十进制网络”的官方态度
    绿藻绕坝水冲去,无题文章风吹来
    耻民
    论番茄花园的倒掉
    存档
    Csdn Blog version 3.1a
    Copyright © 鹏凌三千(cping1982)