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.5 软件模块设计 - 图1

图 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.5 软件模块设计 - 图2

图 27.8 主界面中的工具栏布局

主窗体中还有一个部分显示提示信息的文本框,如鼠标滑过工具栏上的快捷菜单时,该工具的作用和操作方式会显示在文本框中,该文本框设计放置在主界面的最下面。