Можно ли узнать, полностью ли виден JFrame? - PullRequest
3 голосов
/ 26 февраля 2010

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

Ответы [ 2 ]

1 голос
/ 26 февраля 2010

Вот действительно противный подход , который является единственным подходом, который я могу придумать (и не рекомендую):

  • Установите стеклянную панель JFrame полностью красной и покажите стеклянную панель (временно).
  • Используйте класс Robot для выборки всех пикселей (или количества пикселей) из координат экрана, где в данный момент расположен ваш JFrame.
  • Если все ваши сэмплы (или большинство сэмплов согласно некоторому пороговому значению) имеют красный цвет, то, скорее всего, перед вашим JFrame.
  • Наконец, снова скройте стеклянную панель.

Альтернатива (более хорошее решение)

Просто позвоните toFront() на JFrame, чтобы вывести его на передний план и убедиться, что он сфокусирован.

0 голосов
/ 26 февраля 2010

Нет, это невозможно, поскольку ваше Java-приложение знает только содержимое своего окна и ничего больше. Оформление окон и остальная часть экрана управляются операционной системой. В Unix-подобных ОС, таких как Linux, оконный менеджер - это даже совершенно другой процесс в пользовательском пространстве. Другое нативное приложение также будет работать в другом пользовательском процессе.

Могу я спросить, почему ты этого хочешь? Если вы спрашиваете о проблемах с обновлением / перерисовкой, вам ничего не нужно делать. Надеюсь, ваша ОС достаточно умна, и она попросит ваше приложение перекраситься, когда оно снова станет видимым.

...