Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Создание аплета





В данной главе мы попрактикуемся в создании аплета с помощью JBuilder. Наш аплет будет сканировать всю файловую систему того диска, с которого он запускается.

Воспользуемся мастером создания аплета, расположенным в диалоговой панели New, вызываемой командой File New New Applet.

На экране появится диалоговая панель, в которой задается основная, формирующая скелет проекта информация.

Для начала нужно заполнить поле Package, в которое будет помещен класс, а затем поле Class (название класса). Можно пренебречь именем пакета. В этом случае будет создана безымянная группа. Однако лучше не игнорировать поле Package и давать пакетам осмысленные имена, иначе спустя некоторое время вы получите форменную свалку из безымянных пакетов и файлов. И уж поверьте, вам придется основательно покопаться в исходных текстах, чтобы разобраться. Мы будем благоразумны и создадим отдельный пакет Applets. Вы можете размещать там все создаваемые аплеты. Класс нашего аплета будет называться скромно - Applet1. После ввода этой информации вы увидите, что в поле File появится полное имя генерируемого файла исходного текста аплета, включая полный путь к каталогу, в котором он будет размещен. Это полезно для контроля правильности действий.

Теперь при желании можно воспользоваться тремя отмечаемыми кнопками, включающими дополнительные полезные возможности. Выбрав кнопку Generate header comments, вы инициируете генерацию специального заголовка, располагающегося в самом начале исходного текста аплета. Заголовок содержит общую информацию о проекте, которая, по вашему мнению, будет интересна тем, кому придется читать ваши исходные тексты. Эта информация пригодится и вам, если спустя некоторое время вы решите снова обратиться к старому проекту.

Следующая кнопка, Can run standalone, будучи включенной, приводит к генерации статического метода main(), в котором происходит вызов класса аплета. Это весьма полезно при отладке класса Java без применения браузера. Кроме того, вы получаете класс, который может запускаться и как аплет, и как приложение. В последнем случае нужно найти в начале исходного текста аплета описание переменной:

boolean isStandalone = false;

и заменить его строкой:

boolean isStandalone = true;

Теперь вы можете запустить аплет как оконное приложение, используя Java-загрузчик с именем java.exe или его отладочную версию java_g.exe. Это приведет к появлению обычного окна класса Frame, внутри которого "вклеен" аплет. Не правда ли, удобный способ?

Последняя кнопка, Generate standard methods, определяет, следует ли мастеру New Applet произвести генерацию стандартных методов, присущих аплету: start(), stop() и destroy(). Два первых вызываются при запуске и остановке аплета соответственно. Метод destroy() будет вызван после того, как выполнение аплета остановлено, и объект аплета должен быть уничтожен. Как правило, эти методы программисты используют для захвата ресурсов и освобождения их по завершении работы. В нашем примере мы включаем кнопку Generate standard methods для создания каркаса метода start() - а зачем он нужен, станет ясно чуть позже. И хотя это мелочь, но из таких тактических мелочей складывается успешная стратегия программирования. Введя информацию, нажимаем Next>, чтобы перейти на следующий этап генерации аплета.

Теперь займемся созданием программного интерфейса передачи параметров, заданных в HTML-странице тегами <PARAM>. Эти теги являются составной частью тега <APPLET>, определяющего класс встраиваемого аплета, его местоположение и другую подобную информацию.

К этому моменту вы уже должны четко представлять себе, какие параметры вы хотите создать. Пропустив хотя бы один из них, впоследствии, завершив генерацию исходных текстов, вы сможете добавить параметры только вручную. Интерфейс диалоговой панели достаточно понятен.

Начнем с того, что введем в поле Name имя планируемого параметра - showFiles. Если присвоить ему значение True, то наш аплет проведет детальное сканирование файловой системы. В свою очередь значение False приведет к сканированию только на уровне каталогов, без учета файлов. Далее определим тип создаваемого параметра. Очевидно, раз этот параметр может иметь лишь два состояния, для него нужно использовать логический тип boolean, который вы выбираете из раскрывающегося списка в поле Type. Следующее поле Desc служит для ввода комментариев к параметрам. В общем-то особой необходимости в его использовании нет, но для порядка напишем в нем Show all (показать все). Если аплет будет запускаться кем-нибудь другим, комментарии помогут определить, для чего нужен тот или иной параметр. В следующем поле - Variable - нужно указать название переменной, в которую будет помещаться значение считанного из HTML-страницы параметра. Исходный текст, производящий считывание параметров и запись их в указанные вами переменные, генерируется средой JBuilder автоматически. Чтобы имя переменной было и в дальнейшем понятным, можно к нему прибавить префикс var - varShowFiles. Данный способ создания имен является личным изобретением автора, которым он пользуется давно и находит его удобным. Вы же можете задавать имя и по-другому, поскольку здесь нет никаких правил. Главное, чтобы вам самим было понятно, для чего предназначена та или иная переменная. Закончив создание параметра, мы нажимаем на кнопку Next>. Если же вам нужен не один, а несколько параметров, то после ввода информации о каждом нажмите кнопку Add Parameter и введите данные для получения следующего параметра.

Последние действия мастера Applet производят создание HTML-страницы, обрамляющей наш аплет. Она позволяет протестировать работу аплета с помощью браузера WWW или утилиты AppletViewer (входит в поставку как пакета JBuilder, так и стандартного набора разработчика JDK).

Для начала нужно проверить, отмечена ли кнопка Generate HTML Page. Если выключить ее, HTML-страница создана не будет. Затем введите заголовок страницы, набрав его текст в поле Title. В следующем поле Name введите имя, которое будет присвоено аплету. Через него вы сможете ссылаться на аплет из скриптовых программ (написанных на языках управления объектами Web-страниц) и программ на языке Java. Наш аплет мы назовем просто - Applet1, однако еще раз напоминаю о необходимости присваивать разумные имена. Параметры, указанные в полях Width и Height, ответственны за изначальный размер окна аплета, а параметры в полях HSpace и VSpace - за промежуток между окном аплета и соседними с ним элементами страницы Web, список Align предложит варианты выравнивания. Поле Codebase опишем отдельно. Его значение не имеет отношения к геометрии. Им задается местоположение файла класса аплета. Это может быть полный URL-адрес сервера с подкаталогом, где лежит откомпилированный файл загружаемого аплета, или же путь к нему относительно Web-страницы, через которую аплет запускается. В простейшем случае, когда и аплет, и его страница располагаются в одном каталоге, в поле Codebase нужно ввести символ "." (текущий каталог) или же сделать его пустым. Когда все поля заполнены, остается лишь нажать кнопку Finish, чтобы сгенерировать проект аплета со всеми его файлами.

В левой верхней панели AppBrowser отобразится дерево только что созданного аплета:

<HTML><HEAD><METAHTTP-EQUIV="Content-Type"CONTENT="text/html;charset=windows-1251"><TITLE>Applet1 Page</TITLE></HEAD><BODY>Applet1 will appear belowin a Java enabled browser.<BR><APPLETCODEBASE = "."CODE = "Applets.Applet1.class"NAME = "Applet1"WIDTH = 400HEIGHT = 300HSPACE = 0VSPACE = 0ALIGN = left> <PARAM NAME = "ShowFiles"VALUE = "False"></APPLET></BODY></HTML>

Обратите внимание: JBuilder, генерируя исходный текст Web-страницы, учел наши локальные настройки и указал в метапараметре заголовка выбранную нами кириллическую кодировку символов ANSI 1251:

<METAHTTP-EQUIV="Content-Type"CONTENT="text/html; charset=windows-1251">

Кроме того, JBuilder корректно прописывает имя класса аплета:

CODE = "Applets.Applet1.class"

Как видите, имя указано с учетом пакета, в котором сохраняется класс, что избавляет нас от потенциальной ошибки, когда браузер не может обнаружить и запустить аплет. А вот и параметр аплета, который был нами задан ранее:

<PARAM NAME = "ShowFiles"VALUE = "False">

Если теперь переключиться на файл Applet1.java с исходным текстом аплета, то вы обнаружите перекрытый метод getParameter(), который и занят извлечением параметров из HTML-страницы:

public String getParameter(String key,String def) {return isStandalone? System.getProperty(key, def): (getParameter(key)!= null?getParameter(key): def); }

Обратите внимание, что при запуске аплета в качестве самостоятельного приложения (вспомните отмечаемую кнопку Can run standalone) для чтения параметров вместо общепринятого метода getParameter() применяется чтение системных свойств (properties). Но это еще не все. Внутрь метода init() среда JBuilder добавляет строку, которая вызовет перекрытый метод getParameter(), а полученный результат приведет к заданному нами ранее типу параметра:

try {varShowFiles = Boolean.valueOf(this.getParameter("ShowFiles","True")).booleanValue();} catch (Exception e) {e.printStackTrace(); }

Продолжим работу над примером созданием визуальной части аплета. Щелкните на закладке Design для входа в визуальный дизайнер. Щелкните в палитре компонентов на пиктограмме TreeControl и затем - на панели. Компонент будет размещен в пустой панели аплета. Затем у панели, которую вы можете обнаружить в дереве компонентов под ярлыком this, нужно изменить свойство layout на BorderLayout. Это приведет к тому, что компонент будет растянут на всю панель.

А сейчас самое время заняться самим исходным текстом аплета. Первое, что требуется предпринять, - отыскать корневой элемент файловой системы, поэтому напишем для этого специальный метод:

private String findFSRoot() throwsIOException{File appletDir = new File(".");String curPath = appletDir.getCanonicalPath();String root;separator = File.separatorChar;int index = curPath.indexOf((int)separator);root = curPath.substring(0, index);if(root.equals(""))root = new String(new char[]{ separator });return root;}

Создадим объект класса File, который будет отображать элемент текущего каталога (скорее всего, это "песочница", т. е. каталог, отведенный системой для безопасного исполнения аплета), поэтому конструктору объекта передается символ ".", принятый во многих ОС как ссылка на текущий каталог. Класс File нужен для того, чтобы воспользоваться его методами, столь удобными для выполнения нашей задачи. Это видно из второй строчки, где вызывается метод getCanonicalPath(), возвращающий полный путь к текущему каталогу. Четвертой строкой определяется символ-разделитель, используемый операционной системой пользователя (а мы понятия не имеем, где запущен аплет) для разделения каталогов при описании пути. Следующая строка производит поиск первого от начала символа-разделителя в пути к текущему каталогу, начиная с которого метод substring() отрежет остаток строки. Полученный начальный фрагмент пути есть не что иное, как обозначение корня файловой системы. Для тех операционных систем, у которых роль корня выполняет символ-разделитель, как, например, Unix, в предпоследней строке значению корня файловой системы присваивается значение символа-разделителя. Полученный корневой элемент возвращается методом.

Вопросы для самоконтроля

1. Как создать новый проект?

2. Как расширить проект новыми объектами?

3. Можно ли расширить проект новым классом, пользуясь только областью палитры компонентов в главном окне JBuilder?

4. Какие типы компиляции в JBuilder Вы знаете?

5. Как запустить приложение?


Date: 2015-11-15; view: 502; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.007 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию