Как стать автором
Обновить

Знакомство с Netbeans Platform

Время на прочтение4 мин
Количество просмотров23K
Netbeans Platform — это фреймворк основанный на Swing, с помощью которого возможно создание больших десктоп приложений. Одноименное Netbeans IDE созданно, как раз, на базе Netbeans Platform. В нём содержится множество API для более легкой работы с окнами, действиями, файлами и т.п.

По сути, Netbeans Platform — это аналог Eclipse RCP (Rich Client Platform), только основанный на Swing, а не SWT. Выяснять, что лучше, я не собираюсь. Существует мнение, что Netbeans Platform легче изучается, менее «глючен» и, поскольку он основан на Swing, поддерживает большее количество платформ и созданное на нем приложение выглядит одинаково везде. Однако некоторых вещей в нем не хватает.

Каждая отдельная возможность в приложение на Netbeans Platform может быть представлена отдельным модулем, которые, в свою очередь, сравнимы с плагином. Модуль Netbeans — это группа Java классов, которая предоставляет приложению определенный функционал.

Материала на русском, к сожалению, очень мало. Точнее сказать, я ничего не нашёл. Следует добавить страницу netbeans.org/features/platform/all-docs.html в закладки, там есть почти всё, что может понадобится.

Приступаем к работе.


Для начала, следует скачать Netbeans IDE с поддержкой Netbeans Platform. Идем по этой ссылке: netbeans.org/downloads/index.html и скачиваем любую версию, где стоит галка напротив «Пакет SDK платформы NetBeans».

В качестве ознакомления создадим приложение, которое каким-нибудь образом преобразует введенный текст.

Запускаем IDE, в меню «Файл» выбираем пункт «Создать проект». Далее, в открывшимся окне выбираем «Модули Netbeans» -> «Приложение для платформы Netbeans». Нажимаем «Далее», пишем какое-нибудь имя проекта и директорию, где он будет храниться. В конце-концов, нажимаем «Готово».

image

Среда разработки создаст новый проект, в котором ничего нет, но, несмотря на это, вы можете его запустить. Как вы можете заметить, список модулей пуст, давайте создадим новый модуль для окошка, в котором будет поле ввода и кнопка вызова действия. Для этого правой кнопкой нажимаем на «Модули» -> «Добавить новый...». Опять же, придумываем имя и жмем «Далее». После этого пишем кодовое имя «org.word.editor.core», и нажимаем кнопку «Готово».

В итоге получится новый модуль, его можно увидеть в списке проектов. Жмем правой кнопкой по нему, выбираем «Cоздать» -> «Другое». В открывшемся окне в категории «Разработка модулей» выбираем «Диалоговое окно», «Далее». Позицию главного окна ставим «editor», опять «Далее», пишем «Text» в префикс именни класса и «Готово».

На открывшуюся формы кидайте «Участок текста» («Text field») и кнопку.

image

«jTextArea1» переименовываем в «text». Далее дважды нажимаем на вашу кнопку и вставляем следующий код:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
    text.setText(text.getText().toUpperCase());
}


Запускаем проект (клавиша F6). В появившимся окне выбираем «Окно»->«Text» и на экране появится окошко, которые описано в нашем модуле.

image

Модульное приложение с помощью Lookup.


В этом разделе мы создадим два дополнительных модуля. Первый модуль, «TextFilterAPI», содержит интерфейс поставщика услуг. А второй модуль, «UppercaseFilter», является поставщиком услуг для интерфейса. GUI модуль, написанный ранее, никоим образом не будет ссылаться на код поставщика услуг «UppercaseFilter». Это возможно благодаря тому, что «UppercaseFilter» будет зарегистрирован в META-INF/services folder и загружен с помощью класса Netbeans Lookup, который похож на класс ServiceLoader из JDK6.

В окне проектов, создаем модуль с именем TextFilterAPI. Нажимаем «Далее» и в поле кодового имени вводим «org.word.editor.api» и «Готово». В новом модуле создаем интерфейс TextFormater, следующим образом:

package org.word.editor.api;

public interface TextFilter {
    String process(String s);
}


В свойствах модуля TextFilterAPI, переходим на вкладку «Версии API-интерфейса» и в списке публичных пакетов ставим галку напротив «org.word.editor.api».

image

Создаем еще модуль с именем «UppercaseFilter» и кодовым именем «org.word.editor.uppercase». Открываем свойства этого модуля, во вкладке «Библиотеки» добавляем зависимости от «TextFilter» и «Lookup API».

image

После этого создаем класс UppercaseFilter в пакете «org.word.editor.uppercase» следующим образом:

package org.word.editor.uppercase;

import org.openide.util.lookup.ServiceProvider;
import org.word.editor.api.TextFilter;

@ServiceProvider(service=TextFilter.class)
public class UppercaseFilter implements TextFilter {
    public String process(String s) {
        return s.toUpperCase();
    }
}


Теперь переходим с первому модулю, отвечающему за GUI. В его своствах устанавливаем зависимость от «TextFilterAPI» и меняем код обработки нажатия кнопки на следующий:

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


Теперь можно запускать приложение. Можете аналогичном образом добавить модуль «LowercaseFilter», который автоматически будет обрабатывать текст.
Теги:
Хабы:
Всего голосов 49: ↑45 и ↓4+41
Комментарии14

Публикации