Java, как получить компонент верхнего уровня - PullRequest
4 голосов
/ 08 декабря 2011

Я имею в виду «точка зрения мыши». Нечто с наивысшим Z-порядком.
Застрял в JPopupMenu, который не может быть даже частью отношений «родитель-ребенок».

Спасибо.


В тестах мне нужно убедиться, что на экране появился компонент JPopupMenu. У меня нет конкретных дополнительных атрибутов этого JPopuMenu, чтобы найти все JPopupMenus по этому предикату и проверить, видим ли какой-либо из них. Я хотел бы получить все видимые компоненты верхнего уровня и убедиться, что один из них относится к классу JPopupMenu.

Ответы [ 3 ]

4 голосов
/ 08 декабря 2011

Мне тоже не ясно по этому вопросу, но если вам нужен наивысший родительский элемент какого-либо Компонента, есть SwingUtilities.getWindowAncestor(Component);

Если вы хотите получить список всех видимых окон, посмотрите более ранний Stackoverflowвопрос, свинг получить видимые кадры

РЕДАКТИРОВАНИЕ ДОБАВЛЕНО

Затем посмотрите на @mKorbel предложение getComponentZOrder.Но JPopupMenus может быть странным в их происхождении.

Перечитывая ваш вопрос, вы можете получить все Windows верхнего уровня и вызвать getComponentPopupMenu () для проверки на совпадение.

Или, если у вас есть местоположение x, y, лучшим решением будет вызов findComponentAt (x, y).From javadocs:

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

2 голосов
/ 08 декабря 2011

Мне не ясен ваш вопрос, но я думаю, что getComponentZOrder было бы полезно.

1 голос
/ 09 декабря 2011

Не уверен, считается ли JPopupMenu дочерним по отношению к JFrame.

Но если это так, то вы сможете использовать класс Swing Utils Даррила, чтобы найти их.

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