В графическом пользовательском интерфейсе (GUI) для вычислений компонент имеет фокус , когда он выбран для получения ввода от пользователя с помощью события, такого как щелчок кнопки мыши или нажатие клавиши. [1] Перемещение фокуса от определенного элемента пользовательского интерфейса известно как событие размытия по отношению к этому элементу. [2] Обычно фокус снимается с элемента, передавая фокус другому элементу. Это означает, что события фокуса и размытия фактически одновременны по отношению к различным элементам пользовательского интерфейса, один из которых становится сфокусированным, а другой «размытым» (в вычислительном, а не визуальном смысле).
Концепция похожа на курсор в текстовой среде. Однако при рассмотрении графического интерфейса также задействован указатель мыши . Перемещение мыши обычно перемещает указатель мыши без изменения фокуса. Фокус обычно можно изменить, щелкнув по компоненту, который может получить фокус с помощью мыши. Многие рабочие столы также позволяют изменять фокус с помощью клавиатуры. По соглашению Tab ↹клавиша используется для перемещения фокуса на следующий фокусируемый компонент, а + — на предыдущий. Когда впервые появились графические интерфейсы, на многих компьютерах не было мышей, поэтому эта альтернатива была необходима. Эта функция упрощает использование пользовательского интерфейса для людей, не имеющих возможности использовать мышь . В определенных обстоятельствах клавиши со стрелками можно использовать для изменения фокуса.⇧ ShiftTab ↹
Поведение фокуса на рабочем столе можно регулировать с помощью политик управления окнами .
В большинстве основных пользовательских интерфейсов, таких как созданные Microsoft и Apple , часто встречается политика «фокус следует за щелчком» (или «щелчок для фокусировки»), когда нужно щелкнуть мышью внутри окна, чтобы это окно получило фокус. Это также обычно приводит к тому, что окно оказывается выше всех других окон на экране. Если используется модель щелчка фокусировки, подобная этой, текущее окно приложения продолжает сохранять фокус и собирать ввод, даже если указатель мыши находится над другим окном приложения.
Другая распространенная политика в системах Unix , использующих X Window System (X11), — это политика «фокус следует за мышью» (или FFM), при которой фокус автоматически следует за текущим положением указателя. Фокусированное окно не обязательно поднимается; его части могут оставаться под другими окнами. Оконные менеджеры с этой политикой обычно предлагают «автоподъем», который поднимает окно, когда оно сфокусировано, как правило, после настраиваемой короткой задержки. Возможным следствием политики следования фокусу является то, что ни одно окно не имеет фокуса, когда указатель перемещается по фону без окна под ним; в противном случае фокус просто остается в последнем окне.
Модель sloppyfocus является вариантом модели followfocus. [3] Она позволяет продолжать сбор входных данных последним сфокусированным окном, когда указатель мыши перемещается в сторону от любого окна, например, над строкой меню или областью рабочего стола.
Отдельные компоненты окна также могут иметь фокусное положение. Например, в пакете редактирования текста окно редактирования текста должно иметь фокус, чтобы можно было вводить текст. Когда текст вводится в компонент, он появляется в позиции текстового курсора, который также обычно можно перемещать с помощью указателя мыши.
Какой компонент должен иметь фокус по умолчанию и как фокус должен перемещаться между компонентами — это сложные, но важные проблемы в дизайне пользовательского интерфейса. Если фокусировать не на ту вещь, пользователю придется тратить время на перемещение фокуса. И наоборот, если фокусировать на правильную вещь, это может значительно улучшить пользовательский опыт.