帆软报表设计器的菜单栏就是以及
所示的内容, 前面已经说了这些菜单是如何,在哪创建的,当点击这些菜单项时,会调用一系列的Action,这些Action位于fine-report-designer.jar的com.fr.design.actions包下,如图:
下面就重点来介绍下这些Action。
1 所有的Action都继承自com.fr.design.actions.UpdateAction,这是一个抽象类。这个类实现了javax.swing.Action接口,
2 先来看看Javax.swing.Action接口
actionPerformed方法是ActionListener接口中的一个:实际上,Action接口扩展于ActionListener接口,因此,可以在任何需要ActionListener对象的地方使用Action对象。
setEnabled和isEnbaled两个方法允许启用或禁用这个动作,并检查这个动作当前是否启用。当一个连接到菜单或工具栏上的动作被禁用时,这个选项就会变成灰色。
putValue和getValue两个方法允许存储和检索动作对象中的任意名/值,
有两个重要的预定义字符串:Action.NAME和Action.SMALL_ICON,用于将动作的名字和图标存储到一个动作对象中:
表1给出了所有预定义的动作表名称。
表1 预定义动作表名称
表1 预定义动作表名称
名称 |
值 |
NAME |
动作名称,显示在按钮和菜单上 |
SMALL_ICON |
存储小图标的地方;显示在按钮、菜单项或工具栏中 |
SHORT_DESCRIPTION |
图标的简要说明;显示在工具提示中 |
LONG_DESCRIPTION |
图标的详细说明;使用在在线帮助中。没有Swing组件使用这个值 |
MNEMONIC_KEY |
快捷键缩写;显示在菜单项中 |
ACCELERATOR_KEY |
存储加速击键的地方;Swing组件不使用这个值 |
ACTION_COMMAND_KEY |
历史遗留;仅在旧版本的registerKeyboardAction方法中使用 |
DEFALUT |
常用的综合属性;Swing组件不使用这个值 |
如果动作对象添加到菜单或工具栏上,它的名称和图标就会被自动地提取出来,并显示在菜单项或工具栏项中。SHORT_DESCRIPTION值变成了工具提示。
addPropertyChangeListener和removePropertyChangeListener两个方法能够让其他对象在动作对象的属性发生变化时得到通告,尤其是菜单或工具栏触发的动作。例如,如果增加一个菜单,作为动作对象的属性变更监听器,而这个动作对象爱你个随后被禁用,菜单就会被调用,并将动作名称变为灰色。属性变更监听器是一种常用的构造形式,它是JavaBeans组件模型的一部分。
3 介绍完Action接口,下面具体看看UpdateAction的内容。
可以看出UpdateAction继承ShortCut类,实现了Action接口。
componentMap存储了putValue放进来的值,也包括这个action管理的组件,enabled属性也控制componentMap中存储的组件的enabled属性,
可以看出enabled属性控制着componentMap中的组件对象。
存储key-value。
创建菜单项。
创建 菜单East项。
创建工具栏按钮
创建 UseMenuItem。
创建ChechBox菜单选项。
从上可以看出Action可以创建出工具栏上的按钮,菜单上的选项等。
这个类里面有个跟拼音有关的帮助类:
PinyinHelper.convertToPinyinString(title, "", PinyinFormat.WITHOUT_TONE)将中文转成拼音的帮助类。
里面还有一些其他方法,自己可以去看
更多内容:https://blog.csdn.net/sixingbugai?spm=1000.2115.3001.5343 |