动态菜单栏
来源:互联网 发布:晨兴资本 知乎 编辑:程序博客网 时间:2024/05/22 14:52
根据角色和功能的关系矩阵,生成和管理菜单。
MyMenuBar 用String[] menuNames和String[][] menuItemNames分别描述菜单和菜单项。然后,按照角色和功能的关系矩阵,设置各菜单项的可见性。
每一个菜单项有自己的ActionListener对象,它们全部调用含有一个大分支结构的方法actionPerformed。
private JMenuBar initMenuBar(JMenuBar mnb) { for (int i = 0; i < menuNames.length; i++) { JMenu menu = new JMenu(menuNames[i]); for (String menuItemName : menuItemNames[i]) { final JMenuItem menuItem = new JMenuItem(menuItemName); menuItem.addActionListener((evt) -> actionPerformed(menuItemName));// menuItem.addActionListener((evt) -> actionPerformed(evt.getActionCommand()) ); menu.add(menuItem); } mnb.add(menu); } return mnb; }
大分支结构的方法actionPerformed,如下:
private void actionPerformed(String menuItemName) { if (menuItemName == null) { throw new java.lang.IllegalArgumentException(); } switch (menuItemName) { case "修改密码": new PasswordEditDlg(true, user).setVisible(T); break; case "用户管理"://.......有没有想策略一下呢?至少目前不想,20几个策略类令人害怕。比如interface ShowStrategy{void init( User user);},策略一下挺麻烦的。
private void actionPerformed(String menuItemName) { ShowStrategy s = map.get(menuItemName);//Map<String,ShowStrategy> map s.init(user);
0 0
- 动态菜单栏
- 动态添加菜单栏Pluse
- 从数据库动态加载菜单栏
- 在对话框中动态添加菜单栏
- JS实现一个动态下拉菜单栏
- 从数据库读出数据动态生成菜单栏
- MFC 获取临时目录 && 动态修改菜单栏
- 问题在哪?动态菜单栏-------Day86
- 菜单栏
- 菜单栏
- 菜单栏
- 菜单栏
- 菜单栏
- 菜单栏
- C# WinForm利用sideBar动态加载菜单栏,并创建菜单栏事件
- 用Taglib实现--根据权限动态显示菜单栏
- gvim 菜单栏与工具栏隐藏与显示动态切换
- gvim 菜单栏与工具栏隐藏与显示动态切换
- 剑指Offer算法题JAVA版4-12题(全是个人写的非官方,只供参考和自己复习,测试用例都通过了)
- java中Object转String
- 2016-7-2日总结
- BZOJ3626 [LNOI2014]LCA
- libuv学习笔记(22)
- 动态菜单栏
- MFC进度栏的编程(SDI)
- 静态变量
- iOS开发思想
- Android中ImageView和ImageButton的比较详解
- uva 202--Repeating Decimal
- android 16进制颜色值字符串转int值
- 函数
- 【GOF23设计模式】_观察者模式_广播机制_消息订阅_网络游戏对战原理_自带类与接口JAVA251-252