Druzya.org
Возьмемся за руки, Друзья...
 
 
Наши Друзья

Александр Градский
Мемориальный сайт Дольфи. 
				  Светлой памяти детей,
				  погибших  1 июня 2001 года, 
				  а также всем жертвам теракта возле 
				 Тель-Авивского Дельфинариума посвящается...

 
liveinternet.ru: показано количество просмотров и посетителей

Библиотека :: Компьютеры и Программирование :: А.В. Фролов, Г.В. Фролов - Microsoft Visual J++
<<-[Весь Текст]
Страница: из 275
 <<-
 
тпускания клавиши мыши.
   Метод mouseDrag
   До сих пор наши аплеты выполняли рисование только в методе paint, и так 
поступают большинство аплетов. Однако наш аплет должен рисовать линии во время 
перемещения курсора мыши, так как в противном случае пользователю не будет 
видно, как пройдет рисуемая линия.
   Для того чтобы нарисовать что-либо в окне аплета, наобходимо получить 
контекст отображения. Методу paint этот контекст передается через парметр как 
объект класса Graphics. Если же вы собираетесь рисовать в другом методе, 
отличном от paint, необходимо получить контекст отображения, например, так:
Graphics g = getGraphics();
   После получения контекста отображения и включения режима рисования (записью 
в переменную bDrawing значения true) метод mouseDrag стирает линию, которая 
была нарисована ранее, в процессе предыдущего вызова этого же метода:
g.setColor(Color.yellow);
g.drawLine(dmDown.width, dmDown.height, 
   dmPrev.width, dmPrev.height);
   Для стирания линии мы рисуем ее на том же месте с использованием цвета, 
совпадающего с цветом фона.
   Далее метод mouseDrag рисует новую линию черного цвета, соединяя точку, в 
которой была нажата клавиша мыши, с точкой текущего расположения курсора мыши:
g.setColor(Color.black);
g.drawLine(dmDown.width, dmDown.height, x, y);
   После рисования линии координаты ее конца сохраняются в поле dmPrev для 
стирания этой линии при следующем вызове метода mouseDrag:
dmPrev = new Dimension(x, y);
return true;
   Метод mouseMove
   Метод mouseMove не делает ничего, за исключением того, что он отключает 
режим рисования. Таким образом, простое перемещение курсора мыши над окном 
аплета не приводит к рисованию линий.
   События от клавиатуры
   Аплет может обрабатывать события, создаваемые клавиатурой. Например, он 
может реагировать на функциональные клавиши или на клавиши ускоренного выбора 
функций.
   Для того чтобы обработать события от клавиатуры, ваш аплет должен 
переопределить методы keyDown и keyUp:
public boolean keyDown(Event evt, int nKey) 
{
  . . .
}
public boolean keyUp(Event evt, int nKey) 
{
  . . .
}
   В качестве первого параметра этим методам передается объект типа Event, о 
полях которого мы рассказывали в разделе “Как обрабатываются события” этой 
главы.
   Наибольший интерес представляют поля объекта evt с именами key и modifiers. 
Через них передается, соответственно, код нажатой клавиши и код модификации. 
Возможные значения для этих полей вы найдете в только что указанном разделе.
   Второй параметр методов keyDown и keyUp с именем nKey дублирует поле key 
объекта evt.
   Приложение KeyCode
   Для демонстрации методов обработки клавиатурных событий мы подготовили аплет 
KeyCode. В его окне отображаются символы, соответствующие нажимаемым клавишам, 
код соответствующих клавиш и коды модификации (рис. 4.4).

Рис. 4.4. Окно аплета KeyCode
   Аплет KeyCode интересен тем, что в процессе отображения новые строки 
появляются в верхней части окна, а старые сдвигаются вниз после отпускания 
клавиши. Таким образом, мы организовали свертку в окне аплета.
   Прежде чем нажимать клавиши, вы должны передать фокус вода окну аплета. Это 
можно сделать, щелкнув в окне левой клавишей мыши. Фокус ввода - это атрибут, 
который присваивается окну, обрабатывающему ввод от клавиатуры. Так как 
клавиатура одна, а аплетов и других активных окон на экране может быть много, 
необходим механизм, позволяющий определить, в какое окно направялются события, 
создаваемые клавиатурой. Такой механизм и обеспечивается атрибутом фокуса ввода.

   Исходные тексты приложения KeyCode
   Файл исходного текста приложения KeyCode приведен в листинге 4.5.
Листинг 4.5. Файл KeyCode\KeyCode.java
// =========================================================
// Просмотр кодов клавиш
//
// (C) Фролов А.В, 1997
//
// E-mail: [email protected]
// WWW:    http://www.glasnet.ru/~frolov
//            или
//         http://www.dials.ccas.ru/frolov
// =========================================================
import java.applet.*;
import java.awt.*;
 
<<-[Весь Текст]
Страница: из 275
 <<-