Image

Иерархия (видимость) окон.

В связи с особенностями создания прозрачных окон в свинге, я пошел на хитрость. Нужно было сделать так чтоб у окна были собственные прозрачные бордюры нужной формы. Т.к. прозрачность можно задать только для всего окна в целом(со всеми висящими на нем компонентами), то я поступил следующим образом. Отрисовал JWindow, покрасил в нужный цвет, сделал прозрачым а поверх него - JFrame, который содержит уже все нужный компоненты. Соответственно фрейм undecorate = true; и его перемещение синхронизировано с JWindow, Т.е. перемещая фрейм перемещается и заднее окно, тем самым получаем нужный эффект. Но возникла следующая проблема. Я использую jdic для работы с треем и при клике правой кнопки мышии мой JFrame становится позади полупрозрачного JWindow (при клике на иконке, на JFrame приходи событие windowDeactivated). Конечно первое что приходит в голову - просто обратно вернуть фокус JFrame, но тогда тутже закроется меню иконки, т.к. оно потеряет фокус. Получается палка о двух концах.

Вопрос - какими методами можно управлять отображением окон, без использования передачи фокуса.. ну или так, чтоб фокус с треевой менюшки не терялся.