Программирование мобильных телефонов на Java


Программирование мобильных телефонов

  • Введение
  • Глава 1. Устройство мобильных телефонов
  • Глава 2. Платформа Java 2 Micro Edition
  • Глава 3. Средства разработки мобильных приложений
  • Глава 4. Телефонные эмуляторы
  • Глава 5. Механизм работы приложений Java 2 ME
  • Глава 6. Классы пользовательского интерфейса
  • Глава 7. Программирование графики
  • Глава 8. Техника создания игр
  • Глава 9. Мобильная мультимедиа-библиотека
  • Заключение
  • Приложение 1. Основы языка Java
  • Приложение 2. Справочник по Java 2 Micro Edition

     

    Программирование на Java

  • Введение
  • Глава 1. Встроенные типы данных, операции над ними
  • Глава 2. Объектно-ориентированное программирование в Java
  • Глава 3. Пакеты и интерфейсы
  • Глава 4. Классы-оболочки
  • Глава 5. Работа со строками
  • Глава 6. Классы-коллекции
  • Глава 7. Классы-утилиты
  • Глава 8. Принципы построения графического интерфейса
  • Глава 9. Графические примитивы
  • Глава 10. Основные компоненты
  • Глава 11. Размещение компонентов
  • Глава 12. Обработка событий
  • Глава 13. Создание меню
  • Глава 14. Апплеты
  • Глава 15. Изображения и звук
  • Глава 16. Обработка исключительных ситуаций
  • Глава 17. Подпроцессы
  • Глава 18. Потоки ввода/вывода
  • Глава 19. Сетевые средства Java
  • Приложение. Развитие Java

  • 

    3fb01dc2


     

     

    Обработка действий мыши

    Событие MouseEvent возникает в компоненте по любой из семи причин: 

    • нажатие кнопки мыши — идентификатор MOUSE_PRESSED; 
    • отпускание кнопки мыши — идентификатор MOUSE_RELEASED;
    • щелчок кнопкой мыши — идентификатор MOUSE_CLICKED (нажатие и отпускание не различаются);
    • перемещение мыши — идентификатор MOUSE_MOVED; 
    • перемещение мыши с нажатой кнопкой — идентификатор MOUSE_DRAGGED;
    • появление курсора мыши в компоненте — идентификатор MOUSE_ENTERED; 
    • выход курсора мыши из компонента — идентификатор MOUSE_EXITED. 

    Для их обработки есть семь методов в двух интерфейсах:

    public interface MouseListener extends EventListener{

    public void mouseClicked(MouseEvent e);

    public void mousePressed(MouseEvent e) ;

    public void mouseReleased(MouseEvent e);

    public void mouseEntered(MouseEvent e);

    public void mouseExited(MouseEvent e); 

    public interface MouseMotionListener extends EventListener{

    public void mouseDragged(MouseEvent e);

    public void mouseMoved(MouseEvent e); 

    }

    Эти методы могут получить от аргумента е координаты курсора мыши в системе координат компонента методами e.getxo, e.getvo, или одним методом e.getPointo, возвращающим экземпляр класса Point.

    Двойной щелчок кнопкой мыши можно отследить методом e.getciickcount(), возвращающим количество щелчков. При перемещении мыши возвращается 0.

    Узнать, какая кнопка была нажата, можно с помощью метода e.getModifiers() класса inputEvent сравнением со следующими статическими константами класса inputEvent:

    • BUTTON1_MASK — нажата первая кнопка, обычно левая;
    • BUTTON2_MASK — нажата вторая кнопка, обычно средняя, или одновременно нажаты обе кнопки на двухкнопочной мыши;
    • BUTTON3_MASK — нажата третья кнопка, обычно правая.

    Приведем пример, уже ставший классическим. В листинге 12.4 представлен простейший вариант "рисовалки" — класс scribble. При нажатии первой кнопки мыши методом mousePressed () запоминаются координаты курсора мыши. При протаскивании мыши вычерчиваются отрезки прямых между текущим и предыдущим положением курсора мыши методом mouseDragged(). На рис. 12.3 показан пример работы с этой программой.

    Листинг 12.4. Простейшая программа рисования 

    import j ava.awt.*; 

    import j ava.awt.event.*;

    public class ScribbleTest extends Frame{ 

    public ScribbleTest(String s){ 

    super(s);

    ScrollPane pane = new ScrollPane();

    pane.setSize(300, 300);

    add(pane, BorderLayout.CENTER);

    Scribble scr = new Scribble(this, 500, 500); 

    pane.add(scr);

    Panel p = new Panel 0; 

    add(p, BorderLayout.SOUTH);

    Button bl = new Button("Красный"); 

    p.add(bl);

    bl.addActionListener(scr);

    Button b2 = new Button("Зеленый"); 

    p.add(b2);

    b2.addActionListener(scr) ;

    Button b3 = new Button("Синий"); 

    p.add(b3);

    b3.addActionListener(scr) ;

    Button b4 = new Button("Черный"); 

    p.add(b4);

    b4.addActionListener(scr);

    Button b5 = new Button("Очистить"); 

    p.add(bS);

    b5.addActionListener(scr);

    addWindowListener(new WindowAdapter() {

    public void windowClosing(WindowEvent e){ 

    System.exit(0);

    });

    pack();

    setvisible(true); 

    }

    public static void main(String[] args){ 

    new ScribbleTest(" \"Рисовалка\"");

    }

    }

    class Scribble extends Component implements ActionListener, MouseListener, MouseMotionListener{ 

    protected int lastX, lastY, w, h; 

    protected Color currColor = Color.black; 

    protected Frame f;

    public Scribble(Frame frame, int width, int height){

    f = frame; 

    w = width; 

    h = height;

    enableEvents(AWTEvent.MOUSE_EVENT_MASK | AWTEvent.MOUSE_MOTION_EVENT_MASK);

    addMouseListener(this);

    addMouseMotionListener(this); } 

    public Dimension getPreferredSize(){

    return new Dimension(w, h); } 

    public void actionPerformed(ActionEvent event){

    String s = event.getActionCommand();

    if (s.equals ("Очистить")) repaint();

    else if (s.equals ("Красный")) currColor = CofLor.red;

    else if (s.equals("Зеленый")) currColor = Coior.green;

    else if (s.equals("Синий")) currColor = Color.blue;

    else if (s.equals("Черный")) currColor = Color.black; } 

    public void mousePressed(MouseEvent e){

    if ( (e.getModifiers() & MouseEvent.BUTTON 1__MASK) = 0) return;

    lastX = e.getXO; lastY = e.getYO; } 

    public void mouseDragged(MouseEvent e){

    if ((e.getModifiers() & MouseEvent.BUTTON1_MASK) = 0) return;

    Graphics g = getGraphics();

    g.setColor(currColor);

    g.drawLinedastX, lastY, e.getX(), e.getY());

    lastX = e.getX(); lastY = e.getY(); }

    public void mouseReleased(MouseEvent e){} 

    public void mouseClicked(MouseEvent e){}

    public void mouseEntered(MouseEvent e){} 

    public void mouseExited(MouseEvent e){} 

    public void mouseMoved(MouseEvent e){} 

    }

    Рис. 12.3. Пример работы  с программой рисования

    При создании класса-слушателя scribble и реализации интерфейсов MouseListener и MouseMotionListener пришлось реализовать все их семь ме-тодов, хотя мы отслеживали только нажатие и перемещение мыши, и нам нужны были только методы mousePressed () и mouseDragged (). Для остальных методов мы задали пустые реализации.

    Чтобы облегчить задачу реализации интерфейсов, имеющих более одного метода, созданы классы-адаптеры.

     

    -
    



    Copyright © vzlom-1.ru 2020-2021