- •Int month_days [];
- •Int month_days[];
- •If (логическое выражение) оператор1; [ else оператор2;]
- •Int bytesAvailable;
- •If (t) return;
- •Void init(int a, int b) {
- •Вызов метода
- •Void init(int х, int у) {
- •Inside b's calime method
- •Void metoo() {
- •Void callme() {
- •Inside b's callrne method Inside a's metoo method
- •Import пакет1 [.Пакет2].(имякласса|*);
- •Import java.Util.Date
- •Import java.Io.*;
- •Import java.Lang.*;
- •Interface имя {
- •Interface Callback {
- •Void callback(int param);
- •Void callback(int p) {
- •Import java.Util.Random;
- •IndexOf и lastIndexOf
- •ValueOf
- •Inside procedure
- •Inside procA
- •Inside procB
- •Void call(String msg) {
- •If (!valueSet)
- •If (valueSet)
- •Infinity: true, false
- •Import java.Util.Enumeration;
- •Import java.Util.Stack;
- •Import java.Util.EmptyStackException;
- •Import java.Util.Dictionary;
- •Import java.Util.Hashtable;
- •Import java.Util.Properties;
- •Isbn: isbn not set
- •Import java.Util.StringTokenizer;
- •Import java.Io.File;
- •Import java.Io.File;
- •If (f1.IsDirectory()) { // является ли f1 каталогом
- •InputStream
- •Import java.Io.*;
- •Import java.Util.*;
- •Int size;
- •Import java.Io.*;
- •Import java.Io.*;
- •Import java.Util.*;
- •InetAddress
- •Import java.Net.*;
- •Import java.Io.*;
- •Import java.Net.Url;
- •Import java.Net.*;
- •Import java.Io.*;
- •Input.Close();
- •Import java.Awt.*; import java.Applet.*; public class HelloWorldApplet extends Applet { public void paint(Graphics g) { g.DrawString("Hello World!", 20, 20); } }
- •Import java.Awt.*;
- •Import java.Applet.*;
- •Import java.Awt.*;
- •Import java.Applet.*;
- •Import java.Awt.*;
- •Import java.Applet.*;
- •Import java.Awt.*;
- •Import java.Applet.*;
- •Import java.Awt.*;
- •Import java.Applet.*;
- •Import java.Awt.*;
- •Import java.Applet.*;
- •Import java.Awt.*;
- •Import java.Applet.*;
- •Import java.Awt.*;
- •Import java.Applet.*;
- •Vs.Reshape(width - thickness, 0, thickness, height - thickness);
- •Import java.Awt.*;
- •Import java.Applet.*;
- •Import java.Awt.*;
- •Import java.Applet.*;
- •Import java.Awt.*;
- •Import java.Applet.*;
- •Import java.Util.*;
- •Import java.Awt.*;
- •Import java.Applet.*;
- •Import java.Util.*;
- •Import java.Awt.*;
- •Import java.Applet.*;
- •Import java.Awt.*;
- •Import java.Applet.*;
- •Import java.Awt.*;
- •Import java.Applet. *;
- •Import java.Awt.*;
- •Import java.Applet.*;
- •If (o instanceof String) {
- •Import java.Applet.*;
- •Import java.Awt.*;
- •Image art;
- •ImageObserver
- •Int X, int у int width, int height) {
- •ImageProducer
- •ImageFilter и ImageFilterSource
- •Инструментальные средства jdk appletviewer — программа просмотра апплетов Java
- •Java — интерпретатор Java
- •Javac — компилятор Java
- •Javadoc — генератор документации Java
- •Javah — генератор с-файлов
- •Javakey — программа управления ключами и цифровыми подписями
- •Javap — дизассемблер классов Java
- •Native2ascii – программа преобразования исходных текстов Java в ascii-текст
- •Serialver — генератор номера версии класса
- •Новое в Java 1.1
- •Java 1.1 : пакет за пакетом
- •Задания для лабораторных работ
Import java.Awt.*;
Import java.Applet.*;
public class FrameDemo extends Applet {
public void init() {
int width = Integer.parseInt(getParameter("width"));
int height = Integer.parseInt(getParameter("height"));
String val = "There are two ways of constructing " +
"a software design.\n" +
"One way is to make it so simple\n" +
"that there are obviously no deficiencies.\n" +
"And the other way is to make it so complicated" +
"that there are no obvious deficiencies.\n\n" +
“C.A.R. Hoare\n\n";
TextArea text = new TextArea(val, 80, 40);
Frame f = new Frame("Demo Frame");
f.setSize(width, height);
f.add("Center", text);
f.show();
} }
Уже знакомая фраза во фрейме – FrameDemo.html.
Меню
С каждым окном верхнего уровня может быть связана линейка меню. Объект MenuBar может включать в себя несколько объектов Menu. Последние, в свою очередь, содержат в себе список вариантов выбора — объектов MenuItem. Menu — подкласс MenuItem, так что объекты Menu также могут включаться в этот список, что позволяет создавать иерархически вложенные подменю. Вот пример, в котором к окну добавлены несколько вложенных меню.
/* <applet code = “MenuDemo” width=200 height=200>
</applet>
*/
Import java.Awt.*;
Import java.Applet. *;
public class MenuDemo extends Applet {
public void init() {
int width = Integer.parseInt(getParameter("width"));
int height = Integer.parseInt(getParameter("height"));
Frame f = new Frame("Demo Frame");
f.setSize(width, height);
MenuBar mbar = new MenuBar();
f.setMenuBar(mbar);
Menu file = new Menu("File");
file.add(new MenuItem("New... "));
file.add(new MenuItem("0pen..."));
file.add(new MenuItem("Close"));
file.add(new MenuItem("-"));
file.add(new MenuItem("Quit..."));
mbar.add(file);
Menu edit = new Menu("Edit");
edit.add(new MenuItem("Cut"));
edit.add(new MenuItem("Copy"));
edit.add(new Menultem("Paste"));
edit.add(new MenuItem("-"));
Menu sub = new Menu("Special");
sub.add(new MenuItem("First"));
sub.add(new MenuItem("Second"));
sub.add(new MenuItem("Third"));
edit.add(sub);
edit.add(new CheckBoxMenuItem("Debug"));
edit.add(new CheckBoxMenuItem("Testing"));
mbar.add(edit);
f.show();
} }
Посмотрим на практически классическое меню – MenuDemo.html.
AWT при свете дня
AWT в своем нынешнем виде делает прекрасную работу, являясь общим знаменателем - библиотекой, единой для всех платформ. Некоторый недостаток AWT в том, что, поскольку каждый из AWT-компонентов реализован на основе соответствующего компонента базовой операционной системы, их поведение и внешний вид может меняться при смене платформы. Хорошо известны расширения и аналоги AWT – Swing, Java Foundation Classes (Netscape), Application Foundation Classes (Microsoft).
Модели обработки событий
Несмотря на существенные изменения механизма обработки событий в AWT, Java1.1 поддерживает обратную совместимость с моделью обработки событий, принятой в Java 1.0. Однако такая совместимость относится к типу “все или ничего” – эти две модели настолько отличаются друг от друга, что их невозможно использовать в одном приложении одновременно.
Модель обработки событий Java 1.0
Все компоненты, которые мы с вами до сих пор создавали, выглядели неплохо, но были абсолютно бесполезны, поскольку мы не говорили о том, как можно обрабатывать ввод пользователя, осуществляемый с помощью этих управляющих элементов пользовательского интерфейса.
Каждый компонент может обрабатывать события, заместив определенные методы, вызываемые используемой по умолчанию реализацией метода handleEvents класса Component. Этот метод вызывается с объектом класса Event, описывающего все возможные типы событий. Наиболее часто используемые события, например, те, что связаны с мышью и клавиатурой, диспетчеризируются другим методам класса Component.
Все события, связанные с мышью, вызываются с копией оригинального события, а также с координатами х и у, в которых это событие произошло.
mouseEnter вызывается в том случае, когда мышь входит в компонент.
mouseExit вызывается при выходе мыши из области компонента.
mouseMove вызывается при перемещении мыши в области компонента.
mouseDown вызывается при нажатии кнопки мыши.
mouseDrag вызывается при перемещении мыши с нажатой кнопкой.
mouseUp вызывается при отпускании кнопки мыши.
Аналогично, keyDown и keyUp вызываются при каждом нажатии и отпускании клавиши. Событие передается методу вместе с кодом нажатой клавиши. Событие можно проверить, чтобы посмотреть, нажаты ли в данный момент какие либо клавиши-модификаторы, для этой цели можно также пользоваться методами shiftDown, controlDown и metaDown. В классе Event определены десятки констант, позволяющих использовать символические имена, например, PGUP и HOME.
Наконец, для работы со специальными событиями, например, с обратными вызовами (callback) из компонентов Button, Scrollbar и Menu, вам придется замещать метод action. Этот метод вызывается с исходным событием и со вторым параметром, который представляет собой компонент пользовательского интерфейса, создавший это событие. Вы должны проверить этот объект, разобраться, какой из компонентов послал вам событие, после чего передать управление соответствующему данному компоненту обработчику. Для того, чтобы перед приведением типа проверить, принадлежит ли объект к определенному классу, например, к классу Button, вы можете использовать оператор instanceof.
А вот и пример на обработку событий. Мы добавили объект Label к примеру с игрой в “пятнашки”, а также заместили метод action для того, чтобы обрабатывать события, возникающие при нажатии кнопок. Точно такой же механизм можно использовать для управления вводом через любой из подклассов Component.
/* <applet code = “EventDemo” width=200 height=200>
</applet>
*/
