首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

设计模式(十一):结构型之组合模式

(Leaf):叶子节点对象,其下再无分支,是系统层次遍历的最小单位 3、实现 软件菜单 一个菜单可以包含菜单项(菜单项是指不再包含其他内容的菜单条目) 也可以包含带有其他菜单项的菜单 因此使用组合模式描述菜单就很恰当...public String getName() { return name; } //打印菜单名称的方法(包含子菜单和字菜单项) public abstract...void print(); } Menu(菜单项)和MenuItem(叶子菜单)类就可以只覆盖自己感兴趣的方法,而不用搭理不需要或者不感兴趣的方法 举例来说,Menu类可以包含子菜单,因此需要覆盖add...// 树枝节点 public class Menu extends AbstractMenuComponent { //菜单可以有多个子菜单或者子菜单项 private final...++) { System.out.print("--"); } System.out.println(name); //打印子菜单或者子菜单项名称

9310

【译】W3C WAI-ARIA最佳实践 -- 表单

+ Up Arrow: - 当焦点在一个 menu 上时,将焦点移动到上一个项目,可选的,从第一个项目移动到最后一个。...(推荐)打开该menuitem 的子菜单但不用将焦点移动到子菜单,或者打开该menuitem的子菜单,并将焦点放置在子菜单的第一个项目上。...+ Left Arrow: - 当焦点在一个menubar上时,将焦点移动到上一个项目,可选的,从第一个项目移动到最后一个。...(推荐)打开该menuitem的子菜单但不用将焦点移动到子菜单,或者打开该menuitem的子菜单,并将焦点放置在子菜单的第一个项目上。...+ 对应于可打印字符的任意键(可选):将焦点移动到当前菜单中标签以可打印字符开头的菜单项。

8.3K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    《熬夜整理》保姆级系列教程-玩转Wireshark抓包神器教程(4)-再识Wireshark

    单击子菜单项之一将直接打开相应的捕获文件。 Merge…(合并) 此菜单项使您可以将捕获文件合并到当前加载的文件中。...Import from Hex Dump…(从Hex转储导入) 此菜单项将打开 “导入文件” 对话框,该对话框使您可以将包含十六进制转储的文本文件导入到新的临时捕获中。...Quit(退出) Ctrl+Q 此菜单项允许您从 Wireshark 退出。如果您以前没有保存过,Wireshark 会要求您保存捕获文件(可以通过首选项设置将其禁用)。...此子菜单也可用于自定义我们的配置文件。...Colorize Conversation 该菜单项会弹出一个子菜单,可让您根据当前所选数据包的地址为数据包列表窗格中的数据包着色。这使得区分不同对话的分组变得容易。

    2.3K31

    Unity Odin从入门到精通(二):创建编辑器窗口「建议收藏」

    2.4.RootMenuItem:获取根菜单项。 2.5.MenuItems:获取根菜单项下面的子菜单项列表。 2.6.Selection:获取菜单树的选择配置。...3.6.EnumerateTree(Action action):使用深度优先搜索算法来将根菜单项下面的每一个子菜单项都以参数的形式传递给指定的回调函数。...EnumerateTree(Action action, bool includeRootNode):首先使用深度优先搜索算法和是否(true:是 false:否)包含根菜单项参数来将菜单树下面满足条件的每一个子菜单项都以参数的形式传递给指定的回调函数...然后将回调函数结果值为true的菜单项以列表的形式返回。 3.8.HandleKeyboardMenuNavigation:处理键盘菜单导航以防止菜单树从其他文本字段中窃取输入事件。...3.10.UpdateMenuTree:该函数可以手动或者自动调用,主要用来更新菜单树。 3.11.ScrollToMenuItem:将指定的菜单项滚动到可视区域的中间或者底部位置。

    3.7K30

    一起来学matlab-matlab学习笔记9 高级绘图命令_1 图形对象_根对象,轴对象,用户控制对象,用户菜单对象

    建立用户菜单 用户菜单包括一级菜单(菜单条)和二级菜单,有时还可以继续建立子菜单,每一级菜单又包括若干菜单项。...要建立用户菜单可用uimenu函数,因其调用方法不同,该函数可以用于建立一级菜单项和子菜单项。uimenu函数调用格式如下。...在建立子菜单项时,必须指定一级菜单项对应的句柄值。快捷菜单是用鼠标右键单击对象时在屏幕上弹出的菜单。快捷菜单的位置是不固定的,而且总是附加在某个图形对象上。...Position属性:该属性用于定义一级菜单项在菜单条上的相对位置或子菜单项在菜单组内的相对位置。其取值为数值,默认值为9。 BeingDeleted属性:该属性用于删除菜单项。...制作一个带4个子菜单项的顶层菜单项,该下拉菜单分为两个功能区,每个功能区的两个菜单项是相互独立的,因此采用使能属性进行处理;当图形窗坐标轴消隐时,整个坐标分隔控制功能区不可见。

    3.6K40

    AWT的菜单组件

    (右击弹出子菜单),把第一步中准备好的菜单项组件添加进来; 准备菜单条组件MenuBar,把第二步中准备好的菜单组件Menu添加进来; 把第三步中准备好的菜单条组件添加到窗口对象中显示。...MenuItem("注释"); //创建取消注释菜单项 private MenuItem cancelItem = new MenuItem("取消注释"); //创建一个文本域...("退出")){ System.exit(0); } } }; //为注释菜单项和退出菜单项注册监听器...其中,文件菜单中包括新建、保存和退出菜单项,编辑菜单中包括自动换行选择框菜单项、复制和粘贴菜单项,以及一个格式化菜单(formatMenu)作为编辑菜单的子菜单,其中包括注释和取消注释菜单项。...创建了一个PopupMenu(弹出菜单)对象。 创建了四个MenuItem(菜单项)对象,分别为"注释"、“取消注释”、“复制"和"保存”。

    7910

    如何把菜单添加到另外一个VSPackage的菜单里?

    从他的回复可以看出,这些guid和id他是知道的,那我们就以这个作为前提,来看一下如何将自己的菜单项放到别人的菜单下。... 这一句指定了我们的根菜单位于生成...可以看到,在vsct文件中,表示菜单项的节点,有Menu、Group、Button三种,Menu的Parent是Group,Group的Parent是Menu,Button的Parent是Group,呵呵...大概意思就是:如果该菜单项没有子菜单,那么就用Button,并把Parent指向一个Group;如果该菜单项需要包含子菜单,那么就用Menu,并把Parent指向一个Group;Button和Menu不能直接放在...-- 从另外一个package里拷贝进来 --> <GuidSymbol name="guidMenuPackageCmdSet" value="{0215cb29-d60b-494c-b497

    50250

    Head First设计模式——组合模式

    菜单拥有菜单项,菜单项中可能还拥有子菜单,我们现在要打印菜单。也就是处理每个菜单和菜单项,如何将他们合理的组织起来并统一处理?要解决这个问题,组合模式来实现这一需求。...这个模式能够创建一个树形结构,如果我们有了一个树形结构的菜单、子菜单和可能还带有菜单项的子菜单,那么任何一个菜单都是一种“组合”。因为它既可以包含其他菜单,也可以包含菜单项。...个别对象只是菜单项并未持有其他对象。...利用组合设计菜单 我们需要创建一个组件接口来作为菜单和菜单项的共同接口,让我们能够用统一的做法来处理菜单和菜单项,换句话说,我们可以针对菜单或菜单项调用相同的方法。 我们画出菜单设计的类图: ?...foreach 循环打印菜单组件,如果遇到另外一个菜单对象则进入子菜单打印。

    47030

    GTK 菜单的创建详解

    1 定义 1.1 菜单由菜单条和菜单项组成,它们的定义如下所示: 菜单项(GtkMenuItem):添加到菜单条或下拉菜单中构件 顶层菜单项:添加到菜单条上的菜单项称为顶层菜单项 下拉菜单(GtkMenu...):当鼠标移动到某个菜单项后显示出来的菜单(GtkMenu)称为下拉菜单。...它通常用来作为放置菜单项的容器 1.2 菜单的创建 创建一个菜单条 往菜单条上添加菜单项(顶层菜单项) 创建一个下拉菜单,并将该下拉菜单作为顶层菜单项的子菜单 1.3 相关函数 ============...gtk_menu_item_new:创建一个菜单分隔条(菜单分隔条实际上是不带标签的菜单项) gtk_menu_item_set_submenu:将一个下拉菜单设置成指定菜单项的子菜单 =======...,并将其作为某个顶层菜单项的子菜单 menu=gtk_menu_new(); gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem),menu); =====

    1.5K20

    Java-GUI编程之菜单组件

    PopupMenu(右击弹出子菜单),把第一步中准备好的菜单项组件添加进来; 3.准备菜单条组件MenuBar,把第二步中准备好的菜单组件Menu添加进来; 4.把第三步中准备好的菜单条组件添加到窗口对象中显示...2.如果要给某个菜单项关联快捷键功能,那么只需要在创建菜单项对象时设置即可,例如给菜单项关联 ctrl+shif+/ 快捷键,只需要:new MenuItem("菜单项名字",new MenuShortcut...private Menu formatMenu = new Menu("格式"); //创建注释菜单项 private MenuItem commentItem = new...MenuItem("注释"); //创建取消注释菜单项 private MenuItem cancelItem = new MenuItem("取消注释"); //创建一个文本域...command.equals("退出")){ System.exit(0); } } }; //为注释菜单项和退出菜单项注册监听器

    80730

    iOS开发之常用资讯类App的分类展示与编辑的完整案例实现(Swift版)

    首先我们点击第一个页面的“Show Menu Scroll”按钮Push到我们的主菜单页面。主菜单页面上方就是我们的菜单选项了,点击相应的菜单项,会显示相应的内容。...当然你对下方内容进行滑动,菜单项也会随之改变。 点击菜单右边的加号,Present出菜单的编辑页面,该页面也就是我们上篇博客所介绍的页面。...在该页面我们可以添加新的菜单项,并对已经添加的菜单项进行拖动排序。具体效果如下所示。 ? 二、工程目录介绍 下方截图中是本篇博客所涉及到 工程目录。...在该方法中主要做了两件事情,第一件事情是点击的Cell如果可以移动到屏幕的中点。...Cell的宽度是从我们的数据源中获取的,我们的Model中有一个itemWidth()方法用来提供显示该item的Cell的宽度。当然该宽度是根据我们菜单名字的个数来获取的。 ?

    1.5K50

    (翻译)LearnVSXNow!-#6 创建我们第一个工具集-序幕

    (注意:为了减少代码量和提高可读性,这个时候我删除了向导生成的注释,你当然也可以这么做,但这些注释有利于理解代码的含义,很值得一读) 在前面的文章中我们通过向导添加了菜单命令和工具窗口。...手动添加新的菜单项 为了显示一个菜单项,我们要这样做: 为命令创建一个ID、名字和显示的文本,该命令用于显示tool window 创建.vsct文件来设置所谓的command table...例如,如果我们要定义一个和命令相关的菜单项,我们可以把该菜单组定义在Groups下面的Group节点上,把菜单项定义在Buttons下面的Button节点上,把和该菜单相关的图片定义在Bitmaps节点内...Button节点有一些子节点,这些子节点定义了该菜单项的一些属性: 节点 描述 Parent 该节点表示按钮的父亲。一个按钮可以有一个或多个父亲,在界面上看,该按钮代表的命令可以放在多个地方。...编译并且运行这个项目,当vs 2008 Experimental Hive启动后,你可以在菜单“视图|其他窗口”里看到我们的菜单项: ?

    50820

    对 UAF 漏洞 CVE-2015-2546 的分析和利用

    ---- #4 触发鼠标移动消息 这样一来,这就需要在利用代码中创建相互关联的根菜单和子菜单。...当子菜单完成在屏幕中的显示时,根菜单窗口对象和子菜单窗口对象已经通过各自的弹出菜单 tagPOPUPMENU 对象完成关联。...鼠标左键按下的消息以触发子菜单的弹出显示,并在参数 lParam 传入鼠标按下的相对坐标,坐标值应在当前菜单的子菜单项区域范围内,这将在内核中进入函数 xxxMNOpenHierarchy 处理子菜单的显示...当第二次进入处理程序函数时,表示子菜单已显示在屏幕中,根菜单窗口对象和子菜单窗口对象此时已经通过各自的弹出菜单 tagPOPUPMENU 对象完成关联。...由于我们为根菜单创建并关联了子菜单对象,并且子菜单对象已显示在屏幕中,因此当前的根弹出菜单对象成员域 spwndNextPopup 指向子菜单窗口对象的地址。

    1.5K10

    图形化界面的开发(GUI)_Tkinter库的使用-5(Menu+Canvas+Scale+Scrollbar)

    )的使用-3(实例+详细注释+图片脚本) 图片脚本篇 python图片脚本1-批量处理图片尺寸(详细注释+GUI界面+exe可执行文件) python图片脚本2-图片文件批量命名(详细注释+GUI界面+...)用于创建菜单栏,下拉菜单,上下文菜单等等,它通常位于窗口的顶部,包含多个菜单项,每个菜单项又可以有自己的下拉菜单。...,将一个指定的子菜单,通过 menu 参数与父菜单连接,从而创建一个下拉菜单。...menu 此属性与 add_cascade() 方法一起使用,用来新增菜单项的子菜单项...示例 import tkinter as tk ''' 先创建菜单中的所有菜单项,然后将菜单添加到菜单栏中,最后将菜单栏添加到主窗口上。

    11210

    安卓开发之应用资源

    、使用资源 在java代码中使用:R.string.name、R.id.msg 在XML中使用@string/hello使用@color/red等 五、使用数组资源 使用arrays.xml定义数组,根元素是...resources,该元素三种子元素分别为 array:定义普通数组 string-array:定义字符串数组 integer-array:定义整数数组 在Java中使用数组资源格式:R.array.array_name...菜单资源是在/res/menu目录下,通常使用元素,其中内可包含子元素: :定义菜单项 :将多个item包装成一个菜单组 checkableBehavior...checkable:菜单中该单项是否可选 checked:是否已经选中 visible:该菜单项是否可见 enable:是否可用 九、样式和主题 样式资源放在values目录下,样式资源的根元素也是子元素,而style只有两个属性(name:样式名称;parent:继承父样式) 主题资源和样式的区别在于:主题不能作用单个view组件,而是对所有或者单个

    1.4K80

    Java设计模式-组合模式

    一个菜单可以包含菜单项(菜单项是指不再包含其他内容的菜单条目),也可以包含带有其他菜单项的菜单,因此使用组合模式描述菜单就很恰当,我们的需求是针对一个菜单,打印出其包含的所有菜单以及菜单项的名称。...要实现该案例,我们先画出类图: 代码: 不管是菜单还是菜单项,都应该继承自统一的接口,这里姑且将这个统一的接口称为菜单组件。...(); } //获取指定的子菜单 public MenuComponent getChild(int i){ System.out.println("文件没有子菜单...Menu Menu类已经实现了除了getName方法的其他所有方法,因为Menu类具有添加菜单,移除菜单和获取子菜单的功能。...,不能再有子菜单,所以添加菜单,移除菜单和获取子菜单的功能并不能实现。

    59510

    微信二次开发Java自定义菜单事件实现

    Element root = document.getRootElement();           // 得到根元素的所有子节点           List...CommonButton[] { btn21});                                                    /**              * 每个一级菜单都不一定必须有二级菜单项...              * 第三个一级菜单项是"公司公告",那么menu应该这样定义:              * menu.setButton(new Button[] { mainBtn1...                       } else if (eventKey.equals("12")) {                           respContent = "美文菜单项被点击...           Element root = document.getRootElement();           // 得到根元素的所有子节点           List

    1.7K60

    Android开发笔记(一百三十三)导航视图NavigationView

    比如下面这个图片,便是从CSDN的App个人中心页面截图而来。 ?...从上图可以看到,导航视图的组成部分不外乎两块,一块位于页面顶部,可展示用户头像、用户昵称、用户头衔等个人信息;另一块位于页面剩余部分,主要提供前往子栏目的导航菜单,每个菜单项均为左图标右文字的布局形式。...app:menu : 指定导航菜单的资源文件。 app:itemBackground : 指定菜单项的的背景。 app:itemTextColor : 指定菜单项的文字颜色。...app:itemTextAppearance : 指定菜单项的文字样式。 app:itemIconTint : 指定菜单项的图标色彩。...3、每个菜单项只有图标和文字,不能添加其他控件。 4、无法设置每个菜单项的间距。 所以呢,要想实现丰富可定制的导航菜单,还得自己定义一个导航视图。

    2.6K40
    领券