Есть ли взлом Swing для запроса или установки Z-порядка окна? - PullRequest
6 голосов
/ 20 апреля 2009

Мы пытаемся сохранить состояние приложения при выходе и восстановить его при запуске. Часть состояния - это относительный Z-порядок всех JFrames.

К сожалению, Swing, похоже, не предоставляет какого-либо метода для изучения или установки Z-порядка окна (даже относительно других окон в той же виртуальной машине).

Мы имеем дело с установкой Z-порядка, вызывая toFront () для всех окон в последовательном порядке. Но запрос Z-порядка остается нерешенным. (Добавление слушателей фокуса не всегда работает, например, когда кто-то использует действие Windows «Каскад» для группы окон.)

Есть идеи?

Ответы [ 2 ]

5 голосов
/ 20 апреля 2009

Не с какой-либо детализацией.

Как вы говорите, вы можете вызывать toFront () и toBack (), и вы можете попросить окно "оставаться на вершине", но это почти все.

Другой вариант - иметь фрейм с внутренними фреймами и использовать setComponentZOrder () (хотя это работает только для внутренних компонентов - вы должны вызывать его для контейнера).

Я полагаю, что одной из причин того, что в Swing не было приоритета, является то, что поддержка Z-упорядочения весьма зависит от платформы. (Но эй, а что нет ...)

0 голосов
/ 26 августа 2009

Вы можете использовать setComponentZOrder (Компонент c, слой int) и getComponentZOrder (Компонент c) из класса Container. На это есть технические советы JDC: http://72.5.124.55/developer/JDCTechTips/2005/tt0118.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...