Семантические и низкоуровневые события в библиотеке AWT

Семантические и низкоуровневые события в библиотеке AWTВ AWT события разделены на низкоуровневые(low-level) и семантические(semantic). Семантические события описывают действия пользователя, например, щелчок на кнопочке; следовательно, событие ActionEvent является семантическим. Низкоуровневые события обеспечивают возможность таких действий.

Если пользователь щелкнул на кнопке, значит, он нажал кнопку мыши, возможно, переместил курсор по экрану и отпустил кнопку мыши(причем курсор мыши должен находиться в пределах кнопки).Семантические события могут быть также сгенерированы путем нажатия клавиш, например для перемещения по кнопкам с помощью клавиши <Tab>. Аналогично, действие с полосой прокрутки относится к семантическим событиям, в то время как перетаскивание объекта с помощью мыши относится к низкоуровневым.

Из классов пакета java.awt.event, описывающих семантические события, наиболее часто используются следующие.

  • ActionEvent — щелчок на кнопке, выбор пункта меню, выбор пункта в списке, нажатие клавиши <Enter>.
  • AdjustmentEvent — перемещение ползунка на полосе прокрутки.
  • ItemEvent — выбор положения переключателя опции или пункта в списке
  • KeyEvent — нажатие или отпускание клавиши
  • MouseEvent — нажатие и отпускание кнопки мыши, перемещение курсора мыши, перетаскивание курсора, т.е. его перемещение при нажатой кнопке.
  • MouseWheelEvent — вращение колесика мыши
  • FocusEvent — получение или потеря фокуса ввода
  • WindowEvent — изменения состояния окна

Прослушиваются эти события с помощью следующих интерфейсов:

  • ActionListener
  • AdjustmentListener
  • FocusListener
  • ItemListener
  • KeyListener
  • MouseListener
  • MouseMotionListener
  • MouseWheelListener
  • WindowListener
  • WindowFocusListener
  • WindowStateListener

Некоторые из интерфейсов слушателей AWT, а именно те, у которых более одного метода, сопровождаются классом адаптера, реализующего все его методы как пустые и ничего не делающие. (Другие интерфейсы имеют лишь по одному методу, так что никакой выгоды от класса адаптера для этих интерфейсов нет.) Ниже перечислены наиболее часто используемые классы адаптеров.

  • FocusAdapter
  • KeyAdapter
  • MouseAdapter
  • MouseMotionAdapter
  • WindowAdapter