获取Netbeans查找服务的多个实例

时间:2014-05-21 21:20:21

标签: java swing netbeans-platform

主题仅限于:在NetBeans RCP应用程序中加载服务的查找

我有一个名为WordFilter的服务提供商,我有一个包含 2个按钮的GUI,第一个用于大写文本区域的内容,第二个用于小写它(点击时) 。 对于每个按钮,我附加了一个实现我的服务提供商的服务;第一个是UpperCaseFilter,第二个是LowerCaseFilter

一个按钮的操作代码是:

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        String enteredText = text.getText();
        Collection<? extends WordFilter> allFilters = Lookup.getDefault().lookupAll(WordFilter.class);
        StringBuilder sb = new StringBuilder();
        for (WordFilter textFilter : allFilters) {
                String processedText = textFilter.process(enteredText);
                sb.append(processedText).append("\n");
        }
        text.setText(sb.toString());
    }

当我点击Button2(用于小写)时,两个动作同时运行,我想检查要运行哪个实例,因为allFilters给了我两个实例

1 个答案:

答案 0 :(得分:0)

由于您已实施了两项服务UpperCaseFilterLowerCaseFilter,因此您可以在查找过程中单独使用这些过滤器。

EX:转换为大写的动作方法

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt)
{                                         
    String enteredText = text.getText();
    UpperCaseFilter uFilter = (UpperCaseFilter)Lookup.getDefault().lookup(UpperCaseFilter.class)

    StringBuilder sb = new StringBuilder();
    String processedText = uFilter.process(enteredText);
    sb.append(processedText).append("\n");

    text.setText(sb.toString());
}