Управление размером окна




Лекция 15

Окно — основное понятие оконного интерфейса, интерфейсный контейнер. Кроме дочерних элементов интерфейса, окно также может содержать элементы управления самим окном. Важная особенность окон — возможность перекрываться, то есть располагаться поверх друг друга, полностью или частично закрывая нижнее окно.

Основные части окна

 

 

содержимое окна;

рамка окна — отделяет содержимое одного окна от другого, лежащего ниже. Кроме того, в современных оконных менеджерах рамка окна позволяет изменять размер окна, путём перетаскивания границы окна, либо угла. Для компактности и уменьшения визуального шума может быть заменена тенью от окна;

уголок изменения размеров — располагается в правом нижнем углу окна и предоставляет дополнительную площадь для изменения размеров окна (см. закон Фиттса). Присутствует не во всех окнах;

Заголовок окна — располагается обычно в верхней части окна и содержит название окна, а также кнопки управления окном. Если окно не поддерживает свободного перетаскивания, именно заголовок является областью, позволяющей перетаскивать окно. Иногда название окна может скрываться, а в заголовок выводиться другие элементы управления, такие как вкладки браузера;

Кнопки управления окном — начиная с Windows 95, типичным является следующий набор кнопок:

меню окна — одновременно является значком приложения. Располагается в левой части заголовка;

свернуть (_) — в ранних ОС превращала окно приложения в значок на рабочем столе, в более новых — скрывает окно, оставляя кнопку на панели задач;

развернуть (□) — позволяет развернуть окно на весь экран, или переключить приложение в полноэкранный режим;

закрыть (×) — позволяет завершить работу с приложением, либо закрыть конкретное окно. Символ «×» для закрытия окна впервые появился в системе AtariTOSв 1985, позже — независимо от неё в NeXTSTEP, но широкое распространение получил с выходом Windows 95[3].

В некоторых системах, например в OS X, кнопки управления окном располагаются слева. Кроме того, в OS X до версии 10.7 отсутствовала кнопка полноэкранного режима.

 

Особенности поведения окна

Перемещение окон

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

Появление новых окон обычно не регламентируется системой, и они занимают место посередине экрана, либо заданное при разработке программы. Некоторые оконные менеджеры, например входящие в состав среды KDE, располагают вновь открывающиеся диалоговые окна и окна предупреждений так, чтобы они не перекрывали уже открытые. Другой способ — располагать вновь открытые диалоговые окна «каскадом», то есть с небольшим смещением от предыдущего, чтобы оставался виден заголовок окна.

При перемещении окон может использоваться эффект «прилипания ». Возле границы такого окна появляется область, и если в этой области находится граница другого окна, перемещаемое окно становится вплотную к другому, и остаётся неподвижным до тех пор, пока пользователь, перемещая курсор, не попытается вывести окно за пределы этой области. Примером такого подхода может служить проигрыватель Winamp, в котором эффект прилипания реализует ещё одну функцию: дочерние окна программы после прилипания к главному окну могут перемещаться вместе с ним как одно окно. Слипшиеся друг с другом дочерние окна того же плеера такого эффекта не имеют.

Управление размером окна

Обычно, изменить размер окна можно тремя способами — через меню окна (в этом случае изменение размеров возможно с клавиатуры), путём перемещения границ окна либо специальной области в правом нижнем углу окна.

При уменьшении размеров окна могут стать недоступными некоторые важные элементы управления. Чтобы этого избежать, задаётся минимальный размер окна. Если элементов управления слишком много, либо при уменьшении окна они либо попадают в специальное меню, либо в окне появляются полосы прокрутки. Некоторые окна не позволяют изменять размер, среди них — большинство диалоговых окон.

Некоторые оконные менеджеры сохраняют размеры и положение окон после их закрытия для последующего восстановления при повторном открытии, другие, в том числе оконный менеджер ОС Windows, перекладывает эту работу на само приложение.

Полноэкранный режим

В ОС семейства Windows большинство оконных приложений может использовать «псевдополноэкранный режим». При нажатии на кнопку «развернуть», окно занимает всю доступную площадь экрана, кроме панели задач. При этом все элементы окна, кроме рамки, остаются. Для некоторых видов приложений, например, воспроизводящих видео, такой режим неприемлем, и такие приложения обычно закрывают экран полностью, не отображая в таком режиме большинства элементов управления, либо отображая упрощённую их версию. Похожий режим доступен в операционной системе OS X, начиная с версии 10.7 «Lion».

Скрытие окна

В большинстве современных операционных систем и оконных менеджеров в окнах присутствует кнопка «свернуть». При нажатии на эту кнопку окно приложения скрывается, но само приложение не прекращает работу. В разных операционных системах поведение этой кнопки по умолчанию может различаться. В системах, имеющих панель задач, окно приложения можно вызвать нажатием на кнопку приложения на панели задач. При отсутствии панели задач, свёрнутое окно либо уменьшается до одного заголовка, либо на рабочем столе (в старых версиях Windows — в окне диспетчера программ) появляется значок, и раскрыть окно можно нажатием на него. То же самое работает и для дочерних окон приложения, которые не отображаются в панели задач, но имеют кнопку «свернуть».

Закрытие окна

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

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

В диалоговых окнах закрытие окна обычно работает аналогично нажатию на кнопку «отмена». Некоторые окна могут блокировать возможность закрытия, например, если выполняется действие, для отмены которого нужно выполнить какие-то другие операции. Также, при работе с документами, при отсутствии функции автосохранения документов, применяется режим, когда при нажатии на кнопку закрытия появляется диалог, предлагающий сохранить внесённые изменения. При использовании таких утилит резервного копирования, как TimeMachine, подобные диалоги считаются антипаттернами.

Наложение окон

В большинстве случаев, окна перекрывают друг друга так, что активное в текущий момент окно располагается поверх остальных, за ним идёт окно, которое было активно предыдущим, и так далее. Однако, для некоторых окон можно включить режим «поверх всех окон», при котором окно не может быть перекрыто другими, даже если оно неактивно. В некоторых оконных менеджерах, например Openbox, возможность расположить окно поверх остальных доступна из меню окна, а также есть возможность вывести кнопку с этой функцией рядом со стандартными кнопками управления окном.

Дочерние окна приложений, в том числе панели и палитры, а также диалоговые окна, обычно перекрывают основное окно приложения, даже если фокус ввода находится не в нём, при этом для других приложений эти окна равнозначны главному окну приложения, и перекрываются ими так же как и главное.

Разновидности окон

Диалоговые окна

 

Диалоговые окна обычно не являются главными окнами приложения, не отображаются в панели задач и не могут быть развёрнуты на весь экран, а часто даже не позволяют изменять размер окна. Диалоговое окно должно быть закрыто после выполнения действия или прочтения сообщения, для этого в диалоговом окне имеются кнопки, нажатие на которые приводит к закрытию окна. Поэтому диалоговое окно не нуждается также в кнопке «закрыть». Особняком стоит OS X, где диалоги в большинстве случаев являются не окнами, а специальными элементами управления, которые появляются из-под заголовка родительского окна.

 

Модальное окно

 

Модальное окно — окно, обычно диалоговое, открытие которого блокирует доступ к элементам родительского окна.

 

Панели, палитры и плавающие окна

 

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

 

Окна документов в многодокументных приложениях

В многодокументных приложениях поведение окон зависит от того, какая разновидность многодокументного интерфейса используется.

В SDI окно документа по сути является главным окном приложения. Если документов несколько, все окна приложения равнозначны. Выход из приложения происходит при закрытии всех окон приложения. Переключение между окнами приложения происходит так же, как и переключение между приложениями: например, через панель задач.

Интерфейс со вкладками как правило имеет одно окно, однако некоторые приложения позволяют иметь несколько открытых окон, и переносить вкладки из одного окна в другое — такие окна работают как при SDI.

MDI предполагает существование основного окна приложения и окон документов, располагающихся внутри основного окна. Закрытие всех окон документов не приводит к выходу из программы — в этом случае лишь отображается пустая область для окон. Если окно документа развёрнуто, оно теряет заголовок и рамку, а кнопки управления окном и значок приложения переносится в строку меню. Если окно свёрнуто, оно ведёт себя так же, как обычное окно при отсутствии панели задач. Если открыто несколько окон документов, и они развёрнуты на весь экран, переключение между ними происходит через пункт «окно» в строке меню.

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

 

Стилизованные окна

Некоторые программы, такие как медиаплееры могут использовать стилизованные окна, самостоятельно управляющие отображением и поведением всех элементов управления. Такие программы часто позволяют использовать настраиваемый по желанию пользователя внешний вид. Часто в таких программах привычные элементы управления имеют несколько другое назначение, либо располагаются в другом месте. Например, в проигрывателе Winamp, и других, использующих тот же интерфейс обложек, кнопка между «закрыть» и «свернуть» не разворачивает плеер на весь экран, а уменьшает его окно до размера заголовка, при этом некоторые виджеты переносятся в заголовок, позволяя управлять плеером в минимизированном состоянии.

 

Однодокументный интерфейс [1] (англ. Singledocumentinterface, SDI) — способ организации графического интерфейса приложений в отдельных окнах. Не существует «фонового» или «родительского» окна, содержащего меню или панели инструментов, по отношению к активному — каждое окно несёт в себе эти элементы. Такие приложения, позволяющие редактировать более одного документа одновременно, например, текстовые процессоры, могут создавать у пользователя впечатление, что запущена не одна копия программы, а несколько.

Обычно, каждое из окон отображается отдельно на панели задач операционной системы, иногда панель задач позволяет группировать записи об окнах, принадлежащих одной программе. Например, в операционной системе Mac OS X предусмотрена функция Exposé, при исполнении которой окна определённого приложения оптимально группируются на рабочем пространстве экрана.

Многодокументный интерфейс [1] (англ. multipledocumentinterface, MDI) — способ организации графического интерфейса пользователя, предполагающий использование оконного интерфейса, в котором большинство окон (исключая, как правило, только модальные окна) расположены внутри одного общего окна. Этим он и отличается от SDI, в котором окна располагаются независимо друг от друга. Разработчики широко используют оба типа интерфейса, а зачастую и интерфейс смешанного типа. Например, Microsoft меняла интерфейс MicrosoftOffice от SDI к MDI, а потом вернулась обратно к SDI, хотя степень реализации включает и первое, и второе.

Среди недостатков MDI часто указывали отсутствие наглядной информации об открытых окнах, для просмотра текущего списка открытых окон в приложении пользователю было необходимо выбрать в меню пункт «открытые окна/windowlist », или подобный ему. В последнее время в приложениях стали появляться панели задач и вкладки для отображения открытых окон в MDI. Такой тип интерфейса иногда называют многодокументным интерфейсом с вкладками (TDI), хотя фактически это разновидность MDI.

Почти все конструкторы и редакторы приложений на сегодняшней день предоставляют по крайней мере одно решение для создания MDI-интерфейса. Так, например, в библиотеке для создания графического интерфейса на языке Java, под названием Swing, есть класс javax.swing.JDesktopPane, который создаёт контейнеры для отдельных фреймов (класс javax.swing.JInternalFrame). В другом популярном наборе элементов интерфейса — GTK+ — такой возможности нет.

Сравнение

Преимущества (mdi)

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

Все окна приложения можно прятать/показывать, сворачивать/разворачивать и проводить с ними другие манипуляции, как с одним окном.

Дочерние окна можно размещать «черепицей» или «каскадом» в главном окне.

Увеличение скорости и экономия памяти при работе в одном окне, скорость переключения между дочерними окнами также выше, чем между равноправными в среде операционной системы[ источник не указан 584 дня ].

В некоторых приложениях предусмотрены «горячие сочетания клавиш» для быстрой навигации, в частности, для переключения между окнами. Это ещё более повышает скорость и удобство работы с приложением, так как не задействуются дополнительные ресурсы операционной системы.

Логичное решение, если окна — части одного проекта.

Недостатки

Затруднительно (чаще всего, невозможно) выводить содержимое разных дочерних окон на разные мониторы.

Также невозможно выводить их содержимое на разные виртуальные рабочие столы.

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

Плавающие панели инструментов одного приложения могут перекрывать рабочее окно другого, загораживая обзор, а иногда и сбивая пользователя с толку — какая панель к какому приложению относится.

Пользователю нужно привыкать к обоим типам интерфейса, так как введение MDI не отменяет полностью использование SDI, который заложен в большинстве операционных систем.

Многие оконные системы (3D Desktop, Exposé) позволяют с комфортом переключаться между программами. Подобное переключение между окнами документов, как правило, не работает.

Хаос на «рабочем столе» программы, когда открыто одновременно несколько документов.

По умолчанию, использующийся в Windows интерфейс MDI не поддерживает средств переключения между окнами программы, наподобие панели задач.

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2017-12-29 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: