Программирование мобильных телефонов на 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

  • 
    Notice: Undefined offset: 1 in /home/admin/web/vzlom-1.ru/public_html/ingots/data/INGOTS_acode.php on line 464

    3fb01dc2


     

     

    Диспетчеризация событий

    Если вам понадобится обработать просто действие мыши, не важно, нажатие это, перемещение или еще что-нибудь, то придется включать эту обработку во все семь методов двух классов-слушателей событий мыши.

    Эту работу можно облегчить, выполнив обработку не в слушателе, а на более ранней стадии. Дело в том, что прежде чем событие дойдет до слушателя, оно обрабатывается несколькими методами.

    Чтобы в компоненте произошло событие AWT, должно быть выполнено хотя бы одно из двух условий: к компоненту присоединен слушатель или в конструкторе компонента определена возможность появления события методом enableEvents (). В аргументе этого метода через операцию побитового сложения перечисляются константы класса AWTEvent, задающие события, которые могут произойти в компоненте, например:

    enableEvents(AWTEvent.MOUSE_MOTION_EVENT_MASK |

    AWTEvent.MOUSE_EVENT_MASK I AWTEvent.KEY_EVENT_MASK)

    При появлении события создается объект соответствующего класса xxxEvent. Метод dispatchEvent () определяет, где появилось событие — в компоненте или одном из его подкомпонентов, — и передает объект-событие методу processEvent {) компонента-источника.

    Метод processEvent о определяет тип события и передает его специализированному методу processxxxEvent о. Вот начало этого метода:

    protected void processEvent(AWTEvent e){ 

    if (e instanceof FocusEvent){

    processFocusEvent((FocusEvent)e); 

    }else if (e instanceof MouseEvent){ 

    switch (e.getlDO ) {

    case MouseEvent.MOUSE_PRESSED: 

    case MouseEvent.MOUSE_RELEASED: 

    case MouseEvent.MOUSE_CLICKED: 

    case MouseEvent.MOUSE_ENTERED: 

    case MouseEvent.MOUSE_EXITED:

    processMouseEvent((MouseEvent)e); 

    break/case MouseEvent.MOUSE_MOVED: 

    case MouseEvent.MOUSE_DRAGGED:

    processMouseMotionEvent((MouseEvent)e); 

    break; } }else if (e instanceof KeyEvent){

    processKeyEvent((KeyEvent)e); } 

    // ...

    Затем в дело вступает специализированный метод, например, processKeyEvent о. Он-то и передает объект-событие слушателю. Вот исходный текст этого метода:

    protected void processKeyEvent(KeyEvent e){ 

    KeyListener listener = keyListener; 

    if (listener != null){ int id = e.getlDf); 

    switch(id){

    case KeyEvent.KEYJTYPED: listener.keyTyped(e); 

    break;

    case KeyEvent.KEY_PRESSED: listener.keyPressed(e); 

    break;

    case KeyEvent.KEY_RELEASED: listener.keyReleased(e); 

    break; 

    }

    Из этого описания видно, что если вы хотите обработать любое событие типа AWTEvent, то вам надо переопределить метод processEvent (), а если более конкретное событие, например, событие клавиатуры, — переопределить более конкретный метод processKeyEvent о. Если вы не переопределяете весь метод целиком, то не забудьте в конце обратиться к методу суперкласса, например, super.processKeyEvent(e);

    Замечание

    He забывайте обращаться к методу processXxxEvent() суперкласса.

    В следующей главе мы применим такое переопределение в листинге 13.2 для вызова всплывающего меню.

     

    -
    



    Copyright © vzlom-1.ru 2020-2021