it_vse (519823), страница 59
Текст из файла (страница 59)
Для создания менюнеобходимо:1) Создать строку меню и добавить ее в фрейм.2) Создать меню и добавить его в строку меню.3) Создать команду меню, описать для нее обработчик события и добавить ее в меню.4) Создать вложенные подменю и добавить их в меню.Фрейм может создавать и использовать собственные диалоговые окна. Диалоговое окно создается только наосновании фрейма. Апплет не может непосредственно создать диалоговое окно. Диалоговое окно можетбыть модальным – пока оно не будет закрыто, работа с фреймом будет невозможна. Диалоговое окносоздается на основании класса Dialog. Для создания диалогового окна необходимо:1) Создать диалоговое окно.2) Задать для диалогового окна менеджер расположения.3) Добавить в окно элементы (кнопки, надписи, флажки и т.д.) и описать обработчики событий элементов.4) Подогнать размер диалогового окна под отображаемые элементы (метод pack) и запретить изменениеразмеров окна.5) Отобразить диалоговое окно (метод show).Апплет, выполняющийся в фрейме, может запускаться и без участия браузера – для этого в апплетенеобходимо описать метод main.
Ниже приведен пример апплета, выполняющегося в фрейме, содержащегостроку меню и отображающего диалоговое окно перед началом работы.import java.awt.*;import java.awt.event.*;import com.borland.jbcl.layout.*;public class Frame1 extends Frame {public Frame1( ) {/*пустой конструктор фрейма*/ } Ляхевич А.Г., 2000 - 2002 годpublic static void main(String[] args) {final Frame1 myFrame = new Frame1( );final easy myApplet = new easy();myApplet.init(); myApplet.start();myFrame.setLayout(new XYLayout( ) );myFrame.add(myApplet);myFrame.resize(290,290);// создание фрейма// создание апплета для отображения в фрейме// инициализация и запуск апплета// задание менеджера расположения для фрейма// добавление апплета в фрейм// изменение размера фреймаMenuBar myBar = new MenuBar( );// создание строки менюmyFrame.setMenuBar(myBar);// добавление строки меню в фреймMenu fileMenu = new Menu ("Файл");// создание меню "Файл"myBar.add(fileMenu);// добавление меню "Файл" в строку менюMenuItem open = new MenuItem ("Открыть"); // создание команды "Открыть"open.addActionListener(new java.awt.event.ActionListener() { // обработчик события команды "Открыть"public void actionPerformed(ActionEvent e) {myApplet.info.setText("Вы выбрали Открыть");}});fileMenu.add(open);// добавление команды "Открыть" в меню "Файл"// создание пункта меню, который можно отмечать флажкомfinal CheckboxMenuItem autoSave = new CheckboxMenuItem ("Автосохранение");autoSave.addItemListener(new java.awt.event.ItemListener() { // обработчик события изменения флажкаpublic void itemStateChanged(ItemEvent e) {if (autoSave.getState()){myApplet.info.setText("Автосохранение включено");}if (!autoSave.getState()){myApplet.info.setText("Автосохранение отключено");}}});fileMenu.add(autoSave);// добавление команды меню "Автосохранение"fileMenu.addSeparator();// добавление разделителя менюMenu subMenu = new Menu ("Подменю");// создание подменюfileMenu.add(subMenu);// добавление подменю в меню "Файл"MenuItem Close = new MenuItem ("Закрыть"); // создание команды меню "Закрыть"subMenu.add(Close);// добавление команды "Закрыть" в подменюClose.disable();// отключение команды "Закрыть"Close.addActionListener(new java.awt.event.ActionListener( ) { // обработка выбора команды "Закрыть"public void actionPerformed(ActionEvent e) { myFrame.hide( ); }});myFrame.show();// отображение фрейма// создание диалога.
true указывает на то, что диалог модальныйfinal Dialog myDialog = new Dialog(myFrame, "Заголовок диалога", true);myDialog.setLayout(new FlowLayout());// менеджер расположения для диалогаmyDialog.add(new Label("Нажмите ОК для начала работы с апплетом ...")); // добавление надписиButton OK = new Button("OK");// создание кнопки OKOK.addMouseListener(new java.awt.event.MouseAdapter() { // обработчик события нажатия кнопки OKpublic void mouseClicked(MouseEvent e) {myDialog.hide();} });// закрывает диалогmyDialog.add(OK);// добавление кнопки OK в диалогmyDialog.pack();// "ужимает" диалог до минимально необходимых размеровmyDialog.setResizable(false);// запрет изменения размера окна диалогаmyDialog.show();// отображение диалога}}10.5.
Взаимодействие апплета с сервером (пакет java.net).Язык Java обладает мощными возможностями организациями сетевого взаимодействия по модели клиентсервер, большинство из которых входят в пакет java.net. Это, например, класс Soket, позволяющий организовать соединение по протоколу TCP между различными портами клиента и сервера, а также классDatagramPacket, реализующий протокол UDP, класс MulticastSocket, позволяющий использовать широковещательные пакеты, и многие другие. К сожалению, из-за объемности вопроса, нет возможности изложитьего в лекциях, так что желающим придется проработать его самостоятельно (при рассмотрении вопроса,надо не забывать, что апплету разрешено устанавливать сетевые соединения только с сервером откуда онбыл загружен).
Ниже будет приведено только несколько примеров использования класса URL и Ляхевич А.Г., 2000 - 2002 годURLConnection, которые позволяют получать от сервера (передавать на сервер) информацию по протоколуHTTP.Пример 1. Считывается html – документ по указанному адресу и отображается в апплете:import java.applet.*; import java.awt.*; import java.net.*;try {URL address=new URL ("http://www.microsoft.com");// создание объекта URLAppletContext document = getAppletContext ( );// получение ссылки на контекст апплетаdocument.showDocument (address);// отображение документа с www.microsoft.com}catch (MalformedURLException e) { /* не удалось прочитать */ }Пример 2. На сервер, CGI-приложению, методом POST, посылается строка ПРОВЕРКА, и считываетсяответ сервера – одна строка.try {URL address = new URL ("http://somewhere.com/cgi-bin/proga"); // создание объекта URLURLConnection soedinenie = address.openConnection( ); /* более удобный объекта URLConnection обеспечивает не посимвольный а построчный ввод */PrintStream out = new PrintStream (soedinenie.getOutputStream ( ) ); // объекта out для записи данныхDataInputStream in = new DataInputStream (soedinenie.getInputStream ( ) ); // объект in для чтения данныхout.println("string= ПРОВЕРКА ");// отправка строки на серверString otvet = in.readLine ( );// чтение строки с сервера} catch (MalformedURLException e1) {}catch (java.io.IOException e2) {} // обработка исключений* Чтобы воспользоваться методом POST, достаточно записать данные в объект out прежде, чем выполнитьчтение из объекта in.
Если же сначала считать данные из input, то будет выполнен метод GET, ипоследующие попытки записи данных в output приведут к ошибке.10.6. Параметры, конфигурирование апплета.В апплетах могут использоваться параметры, задаваемые пользователем при запуске апплета. Это чем-тонапоминает указание аргументов в командной строке, при запуске DOS программ.
Параметры задаются припомощи тэга <PARAM>, находящегося внутри тэгов <APPLET> </APPLET>, определяющих апплет. Вприведенном ниже примере апплету передаются параметры stroka (отображаемая на экране строка) иfont_size (размер шрифта):<html> <body> <Applet code="AppletName.class" width=350 height=200 name="AppletName"><PARAM NAME=stroka VALUE="Отображаемая строка"><PARAM NAME=font_size VALUE=72></Applet> </body></html>Переданные апплету параметры можно прочитать из апплета при помощи метода GetParameter ( ).
Пример:import java.awt.*;import java.Applet.*;public class AppletName extends Applet {String str;public void init ( ) {String s; str = getParameter("stroka"); \\ считывание параметра strokas = getParameter("font_size"); \\ считывание параметра font_sizeint FontSize = Integer.parseInt(s); \\ преобразование параметра font_size в число типа intFont font = new Font("TimesRoman", Font.BOLD, FontSize);setFont(font); \\ установление параметров шрифта}public void paint(Graphics g) { g.drawstring (str, 100, 100); }}Заключение:В лекции были рассмотрены только базовые конструкции языка Java. Не рассмотрен пакет java.io,позволяющий организовать работу с файлами (апплетам запрещены чтение и запись на диск).
Нерассмотрена работа с потоками – мощная возможность, позволяющая реализовать параллельное выполнениеучастков программы. Не рассмотрен криптографический интерфейс Java Security API, позволяющий легкореализовать надежные криптографические алгоритмы (шифрование данных). Не рассмотрено взаимодействие с менеджером безопасности java. Не рассмотрена возможность динамической загрузки классов,сервлеты Java (апплеты, которые выполняются на сервере, интегрируясь с ним), взаимодействие Java cдругими языками, интерфейс Java Beans API (создание межплатформенных подключаемых модулей,представляющих собой законченные объекты из которых можно "собирать" программы и пользовательскийинтерфейс), использование Java для доступа к базам данных и многое другое.
Однако хочется надеяться, что Ляхевич А.Г., 2000 - 2002 годполученные базовые знания помогут вам легко читать Java-программы и самостоятельно разобраться в этихвопросах. Ляхевич А.Г., 2000 - 2002 годЛекция 12. Язык JavaScriptJavaScript - язык для составления скриптов, встраиваемых в Web-страницы для придания им привлекательного вида. В отличие от VBScript, который поддерживается только в Internet Explorer, JavaScriptподдерживается большинством популярных браузеров. JavaScript - это не Java ! Язык Java был разработанкомпанией Sun Microsistems, а JavaScript – фирмой Netscape (первоначально этот продукт Netscapeназывался LiveScript и только после бума Java, фирма Netscape купила у Sun лицензию и переименовалосвое детище в JavaScript).
Хотя синтаксис Java и JavaScript во многом схож, однако возможности иназначение языков разные. Если апплеты Java представляют собой независимые программы с широкойгаммой возможностей, встраиваемые в HTML-страницу, то скрипты JavaScript в основном нацелены наиспользование существующей объектной модели Web-браузера, а также позволяют расширять ее, создаваясобственные объекты. Программы на Java представляют собой байт-код, а программы на JavaScriptнепосредственно включаются в Web-страницу в виде исходного текста.
Таким образом, Java – это язык длянаписания программ, а JavaScript – это язык для написания скриптов управления HTML-страницами.Для включения программ на JavaScript в HTML-страницу необходимы те же теги <SCRIPT></SCRIPT>, что и для программ на VBScript, выглядящие примерно так:<SCRIPT LANGUAGE="JavaScript"><!-alert("Приветик");--></SCRIPT>В остальном, принцип размещения и написания JavaScript программ похож на рассмотренный ранее дляVBScript – тот же объектно-ориентированный подход, то же манипулирование объектами Window,Document, Form и др. через их свойства, методы и события. Единственное отличие – это синтаксис,унаследованный от Java.
В лекциях не будет уделяться много внимания синтаксису JavaScript, заисключением случаев, когда он отличен от синтаксиса Java. Основной упор будет сделан на решение рядазадач (создание анимации, управление слоями и др.). Поэтому рекомендую перечитать лекции по Java, атакже лекции по VBScript и HTML.Существует четыре версии JavaScript.• JavaScript 1.0. Первая версия языка, поддерживаемая Internet Explorer 3.0 и Netscape Navigator 2.0.• JavaScript 1.1. Поддерживается Netscape Navigator 3.0 и Internet Explorer 4.0 (почти полностью).• JavaScript 1.2. Поддерживается Netscape Navigator 4.0 и Internet Explorer 4.0 (частично).• JavaScript 1.3. Поддерживается Netscape Navigator 4.5.В дескрипторе <SCRIPT> можно указывать номер версии JavaScript. Указание версии JavaScriptпредотвращает попытки броузеров старых версий выполнить сценарии, созданные в новых версияхJavaScript.