快速业务通道

NetBeans NetBeans 平台 6.8快速入门教程 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16
extFilter filter = Lookup.getDefault().lookup(TextFilter.class); if (filter != null) { s = filter.process(s); } text.setText(s); }

NetBeans NetBeans 平台 6.8快速入门教程(7)

时间:2011-07-28 netbeans.org Sailing

以上代码操作可通过 JDK 6 "ServiceLoader" 类完成,只是 "Lookup" 类可以用在 JDK 6 以 前的 JDK 中。此外,"Lookup" 类还有许多附加功能,我们将在下一部分进行说明。

现在,您可以运行代码,并检查是否和以前一样可以正常运行。虽然功能相同,但新的模块化设计 将图形用户界面和过滤器实现进行了更明确的划分。新应用程序还可以非常轻松地实现扩展,只需向应用 程序的类路径中添加新服务提供程序即可。

作为练习,您可以更改代码,以便对文本连续应用找到的所有文本过滤器(使用方法 "lookupAll") 。例如,添加一个删除所有空格的文本过滤器实现,然后测试最终的应用程序。

LookupListener 和 InstanceContent

我们将创建第

LookupListener 和 InstanceContent

"TextTopComponent" 的构造函数,如下所示:

private InstanceContent content;

private TextTopComponent() {
    initComponents();
    setName(NbBundle.getMessage(TextTopComponent.class, "CTL_TextTopComponent"));
    setToolTipText(NbBundle.getMessage(TextTopComponent.class, "HINT_TextTopComponent"));
//        setIcon(Utilities.loadImage(ICON_PATH, true));

    content = new InstanceContent();
    associateLookup(new AbstractLookup(content));

}

更改过滤按钮的代码,以便在单击该按钮时,旧值将被添加到 InstanceContent 对象中。

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
    String s = text.getText();
    TextFilter filter = Lookup.getDefault().lookup(TextFilter.class);
    if (filter != null) {
        content.add(s);
        s = filter.process(s);
    }
    text.setText(s);
}

创建一个名为 "History" 的新模块,并指定 "com.demo.history" 作为其代码名称基。

在 "History" 模块的 "com.demo.history" 包中,创建一个前缀为 "History" 的新窗口组件。指定 此组件应该显示在 "editor" 位置。在创建该窗口后,向其中添加一个文本区域。将该文本区域的变量名 称更改为 "historyText"。

向 HistoryTopComponent 类的构造函数中添加一些代码,使其侦听当前活动窗口 String 类的 lookup 事件。该代码会在文本区域中显示检索到的所有 String 对象:

private Lookup.Result result;

private HistoryTopComponent() {

    ...

    result = org.openide.util.Utilities.actionsGlobalContext().lookupResult

(String.class);
    result.addLookupListener(new LookupListener() {
        public void resultChanged(LookupEvent e) {
            historyText.setText(result.allInstances().toString());
        }
    });
}

NetBeans NetBeans 平台 6.8快速入门教程(8)

时间:2011-07-28 netbeans.org Sailing

然后,您可以启动应用程序并进行试用。结果应与以下屏幕快照中的所示类似:

NetBeans NetBeans 平台 6.8快速入门教程 - 编程入门网

作为练习,您可以将查找结果的类型由 String 更改为 Object,然后查看 当选择不同的窗口时会发生什么情况。

恭喜!至此,您已经使用非常少的编码工作创建了一个模块化应用程序的小示例:

NetBeans NetBeans 平台 6.8快速入门教程 - 编程入门网

此应用程序包含 4 个模块。当满足下列条件时,一个模块中的代码才能被另一个模块使用:(1) 第一 个模块明确公开了包,并且 (2) 第二个模块设置了对第一个模块的依赖关系。这样,NetBeans 平台就可 以帮助您以严格的模块化体系结构组织代码,从而确保仅在提供代码的模块之间设置了约定时才可重用代 码,否则不能随意重用。

此外,还引入了 Lookup 类作为模块间通信的一种机制,该类是 JDK 6 ServiceLoader 方 法的扩展。实现是通过其接口装入的。无需使用实现的任何代码,"WordEngine" 模块便能显示实现程序 所提供的服务。NetBeans 平台应用程序就是以此方式提供松散耦合的。

要继续学习模块化和 NetBeans 平台相关知识,请参见包含 4 个部分的“NetBeans 平台选择管理” 系列(从此处开始)。之后,可参阅 NetBeans 平台学习资源,您可以在其中选择与您的特定业务方案最 相关的教程。此外,如果您有与 NetBeans 平台相关的任何类型的问题,可随时写信至邮件列表 dev@platform.netbeans.org,其相关归档位于此处。

祝您使用 NetBeans 平台愉快,并期待着您的来信!

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号