要查找的Netbeans快速搜索结果

要查找的Netbeans快速搜索结果,netbeans,lookup,Netbeans,Lookup,好的,我想在应用程序内部提供快速搜索结果,当然,通过查找。 搜索效果很好,但通过全局查找找不到找到的结果 有人能帮助克服这个问题吗 以下是快速搜索的代码: public class QSERSCompany implements SearchProvider { @Override public void evaluate(SearchRequest request, SearchResponse response) { try { for (Company k : q

好的,我想在应用程序内部提供快速搜索结果,当然,通过查找。 搜索效果很好,但通过全局查找找不到找到的结果

有人能帮助克服这个问题吗

以下是快速搜索的代码:

public class QSERSCompany implements SearchProvider {

@Override
public void evaluate(SearchRequest request, SearchResponse response) {
    try {
        for (Company k : queries.ERSQuery.allCompanies()) {

            if (k.getCompanyName().toLowerCase().contains(request.getText().toLowerCase())) {
                if (!response.addResult(new SearchResult(k), k.getCompanyName())) {
                    return;
                }
            }
        }
    } catch (NullPointerException npe) {
    }
}

private static class SearchResult implements Runnable, Lookup.Provider {

    private final Company company;
    private final InstanceContent ic = new InstanceContent();
    private final Lookup lookup = new AbstractLookup(ic);

    public SearchResult(Company c) {
        this.company= c;
    }

    @Override
    public void run() {
        ic.add(company);

        try {
            StatusDisplayer.getDefault().setStatusText(
                    company.getCompanyName()
                    + ", " + company.getAddress()
                    + ", " + company.getCity());
        } catch (NullPointerException npe) {
        }
    }

    @Override
    public Lookup getLookup() {
        return lookup;
    }
}
}

这是监听公司对象的部分代码:

public final class ManagementPodatakaTopComponent extends TopComponent {    
   private Lookup.Result<Company> companyLookup = null;
   ...
   private Company selectedCompany;

   ...

@Override
public void componentOpened() {
    companyLookup = Utilities.actionsGlobalContext().lookupResult(Company.class);
    companyLookup .addLookupListener(new LookupListener() {

        @Override
        public void resultChanged(LookupEvent le) {
            Lookup.Result k = (Lookup.Result) le.getSource();
            Collection<Company> cs = k.allInstances();

            for (Company k1 : cs) {
                selectedCompany = k1;
            }

            setCompanyTextFields(selectedCompany);

            jTP_DataManagement.setVisible(true);
            jPanel_Entiteti.setVisible(true);

        }
    });
}
public final class ManagementPodatakaTopComponent扩展了TopComponent{
private Lookup.Result companyLookup=null;
...
私人公司选择公司;
...
@凌驾
公共无效组件已打开(){
companyLookup=Utilities.actionsGlobalContext().lookupResult(Company.class);
companyLookup.addLookupListener(新的LookupListener(){
@凌驾
公共无效结果已更改(LookupEvent le){
Lookup.Result k=(Lookup.Result)le.getSource();
集合cs=k.allInstances();
适用于(k1公司:cs){
selectedCompany=k1;
}
setCompanyTextFields(selectedCompany);
jTP_DataManagement.setVisible(true);
jPanel_Entiteti.setVisible(true);
}
});
}

提供查找的搜索结果?在野外从未见过


请到nbdev@netbeans.org为了获得更好的反馈(可能来自某个NB开发人员)

我终于设法得到了我想要的:

首先,定义接口:

public interface ICodes {
     public Code getCode();
}
然后,我们实现快速搜索:

@ServiceProvider(service = ICodes.class)
public class ClientServicesQS implements SearchProvider, ICodes {

        private static Code code = null;

        @Override
        public void evaluate(SearchRequest request, SearchResponse response) {

            try {
                for (Code c : INFSYS.queries.INFSistemQuery.ByersByName(request.getText())) {
                    if (!response.addResult(new SearchResult(c),
                            c.getName() + " ,Code: " + c.getByerCode()
                            + (c.getAddress() != null ? ", " + c.getAddress() : ""))) {
                        return;
                    }
                }

            } catch (NullPointerException npe) {
                StatusDisplayer.getDefault().setStatusText("Error." + npe.getMessage());
            }
        }

        @Override
        public Code getCode() {
            return ClientServicesQS.sifra;
        }

        private static class SearchResult implements Runnable {

            private final Code code;

            public SearchResult(Code code) {
                this.code= code;
            }

            @Override
            public void run() {
                try {
                    ClientServicesQS.code= this.code;
                    OpenTopComponent("ClientServicesTopComponent");
                } catch (NullPointerException e) {
                    Display.messageBaloon("Error.", e.toString() + ", " + e.getMessage(), Display.TYPE_MESSAGE.ERROR);
                }
            }
        }
    }
最后,通过平台实现了其他模块的查找。 因为我想在调用componentOpen、oe componentActivated时调用lookup,所以首先定义以下内容很有用:

    private void QSCodeSearch() {
            try {
                ICode ic= Lookup.getDefault().lookup(ICode.class);

                if ((code = ic.getCode()) != null) {
                    .
                    .
                    .
                    // setup UI components with data from lookup
                    .
                    .
                    .
                }
            } catch (Exception e) {
        }
    }
当topcomponent被激活时,我们调用QSCodeSearch():


您好!从NB的角度来看,这个想法非常简单:构建松散耦合的体系结构。因此,当我搜索某个内容时,我希望通过查找将其发布,以便侦听的组件将从查找中接收数据。这就是我所需要的,但我不知道如何实现。
@Override
public void componentOpened() {
   ...
    QSCodeSearch()
   ...
}

...

@Override
public void requestActive() {
   ...
    QSCodeSearch()
   ...
}