27.5 软件模块设计
该软件由四个模块组成,分别是主界面模块、文件操作模块、话单操作模块和话单维护模块。这些模块的划分主要根据类似的功能分类。下面分别介绍这四个模块的设计与实现。涉及复杂的算法时会首先给出算法的流程图以利于读者理解。
27.5.1 主界面模块
主界面模块主要包括菜单栏、工具栏和数据显示区三个部分,而文件数据显示区是容器的一个部分,在读入文件时,自动在容器的该位置以表格的形式显示数据,所以这里就只介绍菜单栏设置和工具栏设置。
1.菜单栏设置
菜单栏根据软件系统的功能设置三个菜单,分别为“文件”菜单、“通话统计”菜单和“工具”菜单,其中文件包括诸如打开文件、存储文件、退出系统等功能,“通话统计”菜单包括按照通话频率统计、按照通话时长统计和按照通话时段统计三个子菜单,“工具”菜单包括话单重命名、姓名维护、前缀码维护、归属地维护和关联分析。
【实例27.1】下面展示菜单栏设置中文件菜单的设置方式。
01 //创建JMenuBar对象,在该菜单栏上放置菜单对象
02 JMenuBar menubar=new JMenuBar();
03 //创建JMenu对象,在菜单上添加子菜单
04 JMenu filemenu=new JMenu("文件");
05 filemenu.setFont(new java.awt.Font("Dialog",0,14));
06 //创建子菜单,子菜单名为"打开",设置图示对象为openicon,并且设置了字体
07 JMenuItem openitem=new JMenuItem("打开",openicon);
08 openitem.setFont(new java.awt.Font("Dialog",0,14));
09 //创建子菜单,子菜单名为"保存",设置图示对象为openicon,并且设置了字体
10 JMenuItem saveitem=new JMenuItem("保存",saveicon);
11 saveitem.setFont(new java.awt.Font("Dialog",0,14));
12 //创建子菜单,子菜单名为"打印",设置图示对象为openicon,并且设置了字体
13 JMenuItem printitem=new JMenuItem("打印",new ImageIcon("images/printer.gif"));
14 printitem.setFont(new java.awt.Font("Dialog",0,14));
15 //创建子菜单,子菜单名为"退出",设置图示对象为openicon,并且设置了字体
16 JMenuItem exititem=new JMenuItem("退出",exiticon);
17 exititem.setFont(new java.awt.Font("Dialog",0,14));
18 //在文件菜单上增加子菜单
19 filemenu.add(openitem);
20 filemenu.add(saveitem);
21 filemenu.add(printitem);
22 //在文件菜单上增加一条分隔线
23 filemenu.addSeparator();
24 filemenu.add(exititem);
25 //将文件菜单添加到菜单栏上
26 menubar.add(filemenu);
27 //设置uppanel的布局方式为网格管理器,网格分布为两行一列
28 uppanel.setLayout(new GridLayout(2,1));
29 //默认将toolbar添加到uppanel的第1行
30 uppanel.add(menubar);
【代码说明】其他两个菜单包括“通话统计”菜单和“工具”菜单。其中前者有三个子菜单分别是“通话频率统计”、“通话时长统计”和“通话时段统计”。而后者包括“重命名维护”、“姓名维护”、“前缀码维护”、“归属地维护”和“关联分析”。这些菜单和子菜单的设置布局方式和上述“文件”菜单和子菜单的布局方式相同。布局结果如图27.7所示。
图 27.7 主界面中的菜单布局
2.工具栏设置
工具栏提供用户经常使用的功能,以方便用户使用,要求在工具菜单上有工具提示,并且在用户鼠标滑过该工具栏时,在状态栏中显示当前工具的作用和简洁的操作方法。按照需要在工具上设置了11种常用工具,分别是“打开”、“保存”、“打印”、“重命名”、“姓名维护”、“前缀码维护”、“归属地维护”、“关联分析”、“颜色”、“字体”和“退出”。
【实例27.2】工具栏的布局设置如下所示。
01 //创建JMenuBar对象,在该菜单栏上放置菜单对象
02 //创建打开文件快捷工具
03 ImageIcon openicon=new ImageIcon("images/open.gif");
04 JButton openbutton=new JButton("打开",openicon);
05 openbutton.setBorder(BorderFactory.createEmptyBorder());
06 openbutton.setBorderPainted(false);
07 openbutton.setFont(new java.awt.Font("Dialog",0,14));
08 openbutton.setToolTipText("打开话单的excel文件");
09 //创建保存文件快捷工具
10 ImageIcon saveicon=new ImageIcon("images/save.gif");
11 JButton savebutton=new JButton("保存",saveicon);
12 savebutton.setBorder(BorderFactory.createEmptyBorder());
13 savebutton.setBorderPainted(false);
14 savebutton.setFont(new java.awt.Font("Dialog",0,14));
15 savebutton.setToolTipText("保存为excel文件");
16 //创建打印当前文件快捷工具
17 ImageIcon printericon=new ImageIcon("images/printer.gif");
18 JButton printerbutton=new JButton("打印",printericon);
19 printerbutton.setBorder(BorderFactory.createEmptyBorder());
20 printerbutton.setBorderPainted(false);
21 printerbutton.setFont(new java.awt.Font("Dialog",0,14));
22 printerbutton.setToolTipText("打印当前表");
23 //创建关联分析快捷工具
24 ImageIcon guanlianicon=new ImageIcon("images/save.png");
25 JButton guanlianbutton=new JButton("关联",guanlianicon);
26 guanlianbutton.setBorder(BorderFactory.createEmptyBorder());
27 guanlianbutton.setBorderPainted(false);
28 guanlianbutton.setFont(new java.awt.Font("Dialog",0,14));
29 guanlianbutton.setToolTipText("敏感数据关联");
30……//这里为了节省篇幅,省略了其他工具菜单的设置方式,读者可以参考上面的代码设置
31 //设置颜色选项工具
32 JComboBox cbox=new JComboBox();
33 cbox.setBackground(Color.WHITE);
34 cbox.setFont(new java.awt.Font("Dialog",0,14));
35 cbox.addItem(new ImageIcon("images/red.gif"));
36 cbox.addItem(new ImageIcon("images/green.gif"));
37 cbox.addItem(new ImageIcon("images/yellow.gif"));
38 cbox.addItem(new ImageIcon("images/lianglanse.gif"));
39 cbox.addItem(new ImageIcon("images/huilanse.gif"));
40 cbox.createToolTip().setTipText("设置所选行的背景色");
41 //设置字体大小选项工具
42 JComboBox zitibox=new JComboBox();
43 zitibox.setBackground(Color.white);
44 zitibox.setFont(new java.awt.Font("Dialog",0,14));
45 zitibox.repaint(1,1,1,1);
46 zitibox.addItem("16");
47 zitibox.addItem("18");
48 zitibox.addItem("20");
49 zitibox.addItem("22");
50 zitibox.addItem("24");
51 //向工具栏增加工具按钮
52 JToolBar toolbar=new JToolBar();
53 toolbar.add(openbutton);
54 toolbar.add(savebutton);
55 toolbar.add(printerbutton);
56 toolbar.add(renamebutton);
57 toolbar.add(nameweihubutton);
58 toolbar.add(guishubutton);
59 toolbar.add(weihubutton);
60 toolbar.add(guanlianbutton);
61 //向工具栏增加颜色选项工具按钮
62 toolbar.add(cbox);
63 JLabel clabel=new JLabel("颜色");
64 clabel.setFont(new java.awt.Font("Dialog",0,14));
65 toolbar.add(clabel);
66 //向工具栏增加字体选项工具按钮
67 toolbar.add(zitibox);
68 JLabel zitilabel=new JLabel("字体");
69 zitilabel.setFont(new java.awt.Font("Dialog",0,14));
70 toolbar.add(zitilabel);
71 toolbar.add(exitbutton);
72 //设置uppanel的布局方式为网格管理器,网格分布为两行一列
73 uppanel.setLayout(new GridLayout(2,1));
74 //默认将toolbar添加到uppanel的第2行
75 uppanel.add(toolbar);
【代码说明】工具栏和菜单栏放置在一个面板上,该面板设置为网格布局,分为两行一列,这样先添加的组件菜单栏就放置在第一行,而后添加的组件工具栏就放置在第2行。工具栏的布局结果如图27.8所示。
图 27.8 主界面中的工具栏布局
主窗体中还有一个部分显示提示信息的文本框,如鼠标滑过工具栏上的快捷菜单时,该工具的作用和操作方式会显示在文本框中,该文本框设计放置在主界面的最下面。