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». Нажимаем «Далее», пишем какое-нибудь имя проекта и директорию, где он будет храниться. В конце-концов, нажимаем «Готово».
Среда разработки создаст новый проект, в котором ничего нет, но, несмотря на это, вы можете его запустить. Как вы можете заметить, список модулей пуст, давайте создадим новый модуль для окошка, в котором будет поле ввода и кнопка вызова действия. Для этого правой кнопкой нажимаем на «Модули» -> «Добавить новый...». Опять же, придумываем имя и жмем «Далее». После этого пишем кодовое имя «org.word.editor.core», и нажимаем кнопку «Готово».
В итоге получится новый модуль, его можно увидеть в списке проектов. Жмем правой кнопкой по нему, выбираем «Cоздать» -> «Другое». В открывшемся окне в категории «Разработка модулей» выбираем «Диалоговое окно», «Далее». Позицию главного окна ставим «editor», опять «Далее», пишем «Text» в префикс именни класса и «Готово».
На открывшуюся формы кидайте «Участок текста» («Text field») и кнопку.
«jTextArea1» переименовываем в «text». Далее дважды нажимаем на вашу кнопку и вставляем следующий код:
Запускаем проект (клавиша F6). В появившимся окне выбираем «Окно»->«Text» и на экране появится окошко, которые описано в нашем модуле.
В этом разделе мы создадим два дополнительных модуля. Первый модуль, «TextFilterAPI», содержит интерфейс поставщика услуг. А второй модуль, «UppercaseFilter», является поставщиком услуг для интерфейса. GUI модуль, написанный ранее, никоим образом не будет ссылаться на код поставщика услуг «UppercaseFilter». Это возможно благодаря тому, что «UppercaseFilter» будет зарегистрирован в META-INF/services folder и загружен с помощью класса Netbeans Lookup, который похож на класс ServiceLoader из JDK6.
В окне проектов, создаем модуль с именем TextFilterAPI. Нажимаем «Далее» и в поле кодового имени вводим «org.word.editor.api» и «Готово». В новом модуле создаем интерфейс TextFormater, следующим образом:
В свойствах модуля TextFilterAPI, переходим на вкладку «Версии API-интерфейса» и в списке публичных пакетов ставим галку напротив «org.word.editor.api».
Создаем еще модуль с именем «UppercaseFilter» и кодовым именем «org.word.editor.uppercase». Открываем свойства этого модуля, во вкладке «Библиотеки» добавляем зависимости от «TextFilter» и «Lookup API».
После этого создаем класс UppercaseFilter в пакете «org.word.editor.uppercase» следующим образом:
Теперь переходим с первому модулю, отвечающему за GUI. В его своствах устанавливаем зависимость от «TextFilterAPI» и меняем код обработки нажатия кнопки на следующий:
Теперь можно запускать приложение. Можете аналогичном образом добавить модуль «LowercaseFilter», который автоматически будет обрабатывать текст.
По сути, 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». Нажимаем «Далее», пишем какое-нибудь имя проекта и директорию, где он будет храниться. В конце-концов, нажимаем «Готово».
Среда разработки создаст новый проект, в котором ничего нет, но, несмотря на это, вы можете его запустить. Как вы можете заметить, список модулей пуст, давайте создадим новый модуль для окошка, в котором будет поле ввода и кнопка вызова действия. Для этого правой кнопкой нажимаем на «Модули» -> «Добавить новый...». Опять же, придумываем имя и жмем «Далее». После этого пишем кодовое имя «org.word.editor.core», и нажимаем кнопку «Готово».
В итоге получится новый модуль, его можно увидеть в списке проектов. Жмем правой кнопкой по нему, выбираем «Cоздать» -> «Другое». В открывшемся окне в категории «Разработка модулей» выбираем «Диалоговое окно», «Далее». Позицию главного окна ставим «editor», опять «Далее», пишем «Text» в префикс именни класса и «Готово».
На открывшуюся формы кидайте «Участок текста» («Text field») и кнопку.
«jTextArea1» переименовываем в «text». Далее дважды нажимаем на вашу кнопку и вставляем следующий код:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
text.setText(text.getText().toUpperCase());
}
Запускаем проект (клавиша F6). В появившимся окне выбираем «Окно»->«Text» и на экране появится окошко, которые описано в нашем модуле.
Модульное приложение с помощью 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».
Создаем еще модуль с именем «UppercaseFilter» и кодовым именем «org.word.editor.uppercase». Открываем свойства этого модуля, во вкладке «Библиотеки» добавляем зависимости от «TextFilter» и «Lookup API».
После этого создаем класс 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», который автоматически будет обрабатывать текст.