| Назад 4.9. Автономное приложение и мышьПример демонстрирует способы обработки
    событий, возникающих при перемещении курсора
    мыши в модели JDK версии 1.0. Исходный текст примера Архив проекта для Java WorkShop 2.0  Немного теорииТак же как и аплеты, автономные приложения Java,
    создающие окна на базе класса Frame,  могут
    обрабатывать события, создаваемые мышью.  Чтобы реализовать данную возможность, класс
    указанных выше окон должен реализовывать
    интерфейсы MouseListener и MouseMotionListener (оба или один из
    них в зависимости от логики работы приложения).  Описание примера Если делать щелчки различными клавишами мыши в
    окне автономного приложения, исходные тексты
    которого приведены в этом разделе, то около
    курсора будут отображаться его координаты и
    название клавиши (рис. 1).   
 Рис. 1. В окне автономного приложения
    отображаются координаты курсорамыши и названия
    нажатых клавиш Обратите внимание на то, что координаты здесь
    отсчитываются от верхнего левого угла заголовка
    окна, а не от верхнего левого угла внутренней
    области окна, как это можно было бы подумать.  Если сделать в окне приложения двойной щелчок
    любой клавишей мыши, содержимое окна будет
    стерто.  Рассмотрим кратко исходные тексты приложения.  Класс FrameWindowЭтот класс реализует интерфейс MouseListener,
    необходимый для обработки событий от мыши:  import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
class FrameWindow extends Frame
  implements MouseListener, WindowListener
{
  . . .
}Метод init класса FrameWindowВ задачу этого метода входит регистрация
    нужных нам интерфейсов:  public void init()
{
  this.addMouseListener(this);
  this.addWindowListener(this);
}Первый из этих интерфейсов используется для
    обработки событий от мыши, а второй нужен для
    завершения работы приложения при уничтожении
    окна класса FrameWindow.  Метод mousePressedЭтот метод начинает работать, когда
    пользователь делает щелчок внутри окна
    приложения.  Прежде всего он получает контекст отображения,
    в котором будут рисоваться текстовые строки с
    координатами курсора мыши и с названием нажатой
    клавиши:  Graphics g = getGraphics(); Далее формируется строка с координатами
    курсора мыши, полученными при помощи методов getX и
    getY:  String s="";
s = "[" + e.getX() + "," + e.getY() + "]"; Далее мы определяем, какая клавиша мыши была
    нажата и добавляем к строке s соответствующий
    текст:  int m = e.getModifiers();
switch(m)
{
  case MouseEvent.BUTTON1_MASK:
  {
    s += " left";
    break;
  }
  case MouseEvent.BUTTON2_MASK:
  {
    s += " middle";
    break;
  }
  case MouseEvent.BUTTON3_MASK:
  {
    s += " right";
    break;
  }
}Если пользователь сделал двойной щелчок
    клавишей мыши, окно приложения перерисовывается,
    а затем метод возвращает управление:  int clicks = e. getClickCount();
    
if(clicks > 1)
{
  repaint();
  return;
} В случае же одинарного щелчка строка s
    отображается в месте расположения курсора мыши:  g.drawString(s, e.getX(), e.getY()); 
 Назад |