Иллюстрированный самоучитель по Java


           

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


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

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

Чтобы в компоненте произошло событие 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 о. Он-то и передает объект-событие слушателю. Вот исходный текст этого метода:



Содержание  Назад  Вперед





Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий