Введение

Активный компонент графического интерфейса, принимающий ввод
В графическом пользовательском интерфейсе (GUI) компонент получает фокус, когда он выбран для приема ввода от пользователя посредством события, такого как щелчок мышью или нажатие клавиши. Перемещение фокуса с конкретного элемента пользовательского интерфейса называется событием потери фокуса для этого элемента. Обычно фокус снимается с элемента, передавая его другому элементу. Это означает, что события получения и потери фокуса практически одновременны для разных элементов пользовательского интерфейса: один элемент получает фокус, а другой его теряет (в вычислительном, а не визуальном смысле). Эта концепция аналогична курсору в текстовой среде. Однако при работе с графическим интерфейсом также присутствует указатель мыши. Перемещение мыши обычно перемещает указатель мыши, не изменяя фокус. Фокус обычно можно изменить, щелкнув мышью по компоненту, который может его принимать. Многие операционные системы также позволяют изменять фокус с помощью клавиатуры. По соглашению, клавиша Tab используется для перемещения фокуса к следующему элементу, принимающему фокус, а Shift+Tab – к предыдущему. Когда графические интерфейсы только начинали внедряться, у многих компьютеров не было мышей, поэтому эта альтернатива была необходима. Эта функция облегчает использование пользовательского интерфейса людям, которые не могут использовать мышь. В определенных ситуациях клавиши со стрелками также могут использоваться для изменения фокуса.

Фокусировка окна

Поведение фокуса на рабочем столе может определяться политиками управления окнами.

Нажмите , чтобы сфокусировать

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

Фокус следует за указателем

Другая распространенная политика в системах Unix, использующих X Window System (X11), — это политика "фокус следует за мышью" (или FFM), при которой фокус автоматически переходит к окну, находящемуся под указателем мыши. Окно, получившее фокус, не обязательно поднимается вверх; его части могут оставаться под другими окнами. Менеджеры окон, поддерживающие эту политику, обычно предлагают функцию "автоподъема" (autoraise), которая поднимает окно при получении фокуса, как правило, после настраиваемой небольшой задержки. Возможным следствием политики следования фокуса является то, что ни одно окно не имеет фокуса, когда указатель мыши перемещается на фон, где нет окон. В противном случае фокус остается в последнем активном окне.

Небрежная фокусировка

Модель "нечёткого фокуса" является вариантом модели "следующего фокуса". Она позволяет продолжать ввод в последнее активное окно, даже когда указатель мыши перемещается за пределы любого окна, например, над меню или на рабочий стол.

Фокусировка компонента внутри окна

Отдельные компоненты окна также могут иметь фокус. Например, в текстовом редакторе окно редактирования текста должно иметь фокус, чтобы можно было вводить текст. Когда текст вводится в компонент, он появляется в позиции текстового курсора, который обычно также можно перемещать с помощью указателя мыши. Определение того, какой компонент должен иметь фокус по умолчанию, и как фокус должен переключаться между компонентами – сложные, но важные задачи при разработке пользовательского интерфейса. Неправильный выбор фокуса заставляет пользователя тратить время на его переключение. И наоборот, правильный выбор фокуса может значительно улучшить взаимодействие с пользователем.