技术开发 频道

Swing第二刀:枝间新绿一重重

  XML配置

  每个应用程序都千奇百怪,功能各异。如何用一个同样的界面来组织呢?的确,这个界面并非适合所有人。不过这里的所有菜单、按钮、流程图、图标等,其动作都是可以用一个“动作码”类定义的,所有的动作都会回调一个统一的函数。而我们只要在这个函数处插入监听,就可以拦截具体动作码,执行我们想做的任何事情,例如格式化C盘、往aobama@whitehouse.com邮箱发个垃圾邮件啥的。

  例如,要定义主菜单,通过这个XML:

<?  xml version="1.0" encoding="UTF-8"  ?>    
<  menubar  >    
<  menu   text  ="System"   >    
<  menu   text  ="One Sub Module"   >    
<  menuitem   text  ="Test Report Item"   tooltip  ="Tooltip"    icon  ="/free/email.png"   action  ="A001"   />    
<  menuitem   text  ="Test Report Item"   tooltip  ="Tooltip"   icon  ="/free/email.png"   action  ="A001"   />    
<  menuitem   text  ="Test Report Item"   tooltip  ="Tooltip"   icon  ="/free/email.png"   action  ="A001"   />    
<  menuitem   text  ="Test Report Item"   tooltip  ="Tooltip"    icon  ="/free/email.png"   action  ="A001"   />    
</  menu  >    
</  menubar  >  

  以上XML可以定义一个System的主菜单,以及一个One Sub Module的菜单项,以及一系列的二级菜单。每个菜单都可以设置icon图标、文字、tooltip文字,以及动作码(就是那个action)。如下图:

XML配置

  左侧的模块栏就是典型的Outlook的风格,很多软件干脆都叫它OutlookPane(我这里也是如此)。这个OutlookPane的配置,通过如下类似XML:

<outlook>  
<module text="Engineering Box"          icon="/free/test/module_unselected.png"
selected_icon
="/free/test/module_selected.png"
network
="network.xml">  
</module>  
</outlook>

  同样,主模块(也就是每个大分栏)包含了模块栏的文字、icon图标(选中和未选中两个),以及一个xml文件。这个xml文件包含了一个流程图,流程图包含了具体的子模块。点击展开大模块栏后,所有的子模块也会显示在栏目中,同时模块的流程关系会通过对应的xml文件中定义的方式,显示在一个图形化的流程图界面中,最终显示在中间的tab页上。

XML配置 

  可以看到,左侧的模块列表和中间的图形节点是一一对应的。当鼠标选中节点后(变成橙色),左侧的列表对应的项也会被选中。同时,和这个节点(代表了一个具体子模块)相关的功能,都会显示在右侧的快捷列表中(这是通过指向的network.xml文件定义的)

0