欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

使用TopComponent群组 博客分类: NetBeans XML编程 

程序员文章站 2024-02-23 12:59:52
...

TopComponent 群组的作用是在打开一个 TopComponent 组件的同时,打开其他相关的 TopComponent 组件。例如,当打开或者激活 GUI 编辑器的时候,“组件面板”、“属性”窗口和“检查器”窗口都会出现。当需要一个组件同时伴随着很多其他类似于组件面板窗口的时候,利用 TopComponent 群组可以轻松实现一个组件的激活引发其他组件被打开或者被选中。

定义群组涉及到 2 XML 文件。首先是 wsgrp ,它代表“窗口系统群组( Window System Group )”。它定义了“窗口系统”的群组,系统根据它的定义查找对应的目录,它也定义了群组是否应该在启动时打开。另一个文件是 wstcgrp ,它代表“窗口系统 TopComponent 群组( Window System TopComponent Group )”,这个文件通过 ID 识别单态的 TopComponent 组件,同时还定义了一些群组的打开和关闭属性。

 

TopComponent 群组编程实例

 

首先 创建 一个模块项目 TopComponentGroup 然后 新建 2 个窗口组件( TopComponent ),命名为 EditorTopComponent SatelliteTopComponent ,就像窗口的名字所表示的那样, SatelliteTopComponent 将会随着 EditorTopComponent 的打开和关闭一同打开和关闭。

首先新建一个名为 EditorGroupWsgrp xml 文件 ,这个文件里定义了名为EditorGroup的编辑器窗口群组。

< group  version ="2.0" >
    
< module  name ="org.jqueen.nb.topcomponentgroup"  spec ="1.0"   />
    
< name  unique ="EditorGroup"   />
    
< state  opened ="false"   />
</ group >


再新建一个名为SatelliteTopComponentWstcgrp的xml文件,在这个文件里可以通过ID识别出 SatelliteTopComponent 组件

< tc-group  version ="2.0" >
    
< tc-id  id ="SatelliteTopComponent"   />
    
< open-close-behavior  open ="true"  close ="true"   />
</ tc-group >


编辑模块的 layer.xml 文件,在系统文件系统中的 Windows2 目录添加一个 Group 文件夹,将名为"EditorGroup"的群组添加进Group。

< folder  name ="Groups" >
    
< file  name ="EditorGroup.wsgrp"  url ="EditorGroupWsgrp.xml" />
    
< folder  name ="EditorGroup" >
        
< file  name ="SatelliteTopComponent.wstcgrp"  url ="SatelliteTopComponentWstcgrp.xml" />
    
</ folder >
</ folder >


编辑EditorTopComponent 内容,重写TopComponent类的componentOpened()和componentClosed()方法,在 EditorTopComponent 被打开和关闭时打开和关闭名为"EditorGroup"的群组。

    @Override
    
protected   void  componentOpened() {
        TopComponentGroup group 
=  WindowManager.getDefault().findTopComponentGroup( " EditorGroup " );
        
if  (group  !=   null ) {
            group.open();
        }
    }

    @Override
    
public   void  componentClosed() {
        TopComponentGroup group 
=  WindowManager.getDefault().findTopComponentGroup( " EditorGroup " );
        
if  (group  !=   null ) {
            group.close();
        }
    }


至此,就完成了一个TopComponent群组的编辑。执行模块项目,当从窗口菜单中打开EditorTopComponent时 SatelliteTopComponent 会自动打开, EditorTopComponent被关闭时 SatelliteTopComponent 也会自动关闭。

样例程序下载

 

 

相关标签: XML 编程