前面分析了帆软报表设计器主界面采用了BorderLayout布局,如下图:
1 NORTH布局部分,这个部分放到的NorthRegionContainerPane。他是设计器的Menu部分。下面来分析下这个类。
1.1 构造函数
可以看出这个类也是BorderLayout布局,South放的是UIMenuHighLight,这个应该是Menu的高亮部分 。
1.2 initNorthEastPane方法
上面创建的northEastPane,就是一个BorderLayout布局的空JPanel。
1.3 看下refreshNorthEastPane
将northEastPane的BorderLayout布局改为FlowLayout布局了,这个布局是将组件按照设置对齐方式从左向右排列,一行排满到下一行继续排列。这里对齐方式是2,表示从右往左。
northEastPane.add(ad.createAlphaFinePane());
northEastPane.add(ad.createNotificationCenterPane());
northEastPane.add(ad.createBBSLoginPane())
上面是增加三个JLabel组件,
从上面可以看出 这个部分应该就是设计器的:
那么菜单那部分UI在哪创建的呢?
其实他是在DesignerFrame的initMenuPane方法中创建的。
他是在this.resetToolkitByPlus((ToolBarMenuDockPlus)null)创建的。这个方法会调用NorthRegionContainerPane.getInstance().resetToolkitByPlus(plus, this.ad)来创建的。具体的创建代码为:
可以看出 createFileMenuDef创建File一级菜单,createTemplateShortCuts创建模板一级菜单,createTemplateShortCuts的调用过程中,会调用com.fr.design.mainframe.ElementCasePaneDelegate的createInsertMenuDef,createCellMenuDef来创建插入,单元格菜单。
createServerMenuDef创建服务器一级菜单,createHelpMenuDef创建帮助一级菜单,
下面看看创建File菜单的过程:
首先这个方法是在com.fr.design.mainframe.toolbar.ToolBarMenuDock类中,
创建菜单项的类是:MenuDef
File菜单下的是通过 , 一共给File菜单添加了8个Action:
NewWorkBookAction,NewPolyReportAction,OpenTemplateAction,OpenRecentReportMenuDef,CloseCurrentTemplateAction,PreferenceAction,SwitchExistEnv,ExitDesignerAction。
所有的其他Action都在 fine-report-designer的com.fr.design.actions包下,看图:
这些Action就是菜单栏上的功能,后面可以详细研究下
更多内容:https://blog.csdn.net/sixingbugai?spm=1000.2115.3001.5343 |