Класс ImageFilterDemo является каркасом апплета для других фильтров изображений. Он использует простой менеджер компоновки BorderLayout, с панелью в позиции South, содержащей кнопки, которые будут представлять каждый фильтр. Объект Label занимает слот North для информационных сообщений о ходе работы фильтра. Изображение (которое инкапсулировано в Canvas подклассе LoadedImage, описанном позже) размещается в слоте Center. Мы анализируем кнопки фильтров вне параметра filters тега <param> (где они отделены значками +) — с помощью класса StringTokenizer.
Метод ActionPerformed() интересен тем, что он использует метку кнопки как имя класса фильтра, который он пробует загрузить с помощью метода newInstance():
Как видно из кода апплета, в нем использованы классы PlugInFilter, LoadedImage, которые должны быть добавлены в программу. Состав проекта в среде Eclipse приведен на рис.8.
Рис. 8. Состав проекта
После полной разработки проекта для запуска апплета надо подготовить html-файл, в котором задать два параметра, один - с указанием файла изображания и второй - с названиями фильтров, разделенных знаком "+". Далее приведен пример такого html-файла: