Извлечение нескольких экземпляров службы Netbeans Lookup

Тема просто о: Поиске загрузки служб в RCP-приложении NetBeans.

У меня есть поставщик услуг с именем WordFilter, и у меня есть графический интерфейс, который содержит 2 кнопки, первая для прописных букв содержимого текстовой области, а вторая для прописных букв (при нажатии). Для каждой кнопки я прикрепил службу, реализующую моего поставщика услуг; первый - 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 дает мне два экземпляра


person Houssem Badri    schedule 21.05.2014    source источник
comment
Поскольку у вас есть кнопки для преобразования строки в верхний/нижний регистр, почему бы вам просто не получить текст из текстовой области и не вызвать toLowerCase() и toUpperCase()?   -  person jdiver    schedule 22.05.2014
comment
Я работаю над приложением платформы Netbeans, которое должно быть модульным.   -  person Houssem Badri    schedule 22.05.2014


Ответы (1)


Поскольку у вас есть две службы UpperCaseFilter и LowerCaseFilter, вы можете использовать эти фильтры отдельно в процессе поиска.

Пример: метод действия для преобразования в верхний регистр

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());
}
person Keshan De Silva    schedule 22.07.2014