Прозрачный компонент AWT возможен?

Мне нужен полупрозрачный компонент/контейнер AWT для размещения поверх других компонентов для получения событий мыши.

Проблема здесь в том, чтобы создать полупрозрачный компонент. Мое расследование до сих пор показало, что у Swing есть возможность делать setOpaque(false), например. JPanel. Есть ли что-то подобное для AWT?

Идея состоит в том, чтобы сделать ScrollPane прокручиваемым, просто щелкнув где-нибудь и перемещая мышь. Вот почему мне нужен прозрачный компонент, чтобы разместить его над всеми остальными компонентами.

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

заранее спасибо


person The Big Lebowski    schedule 15.02.2012    source источник


Ответы (2)


AFAIK невозможно правильно для доисторического AWT Container and Components, вы можете попробовать это, изменив этот код с Swing на AWT, Прозрачность поддерживается только для Swing JComponents

person mKorbel    schedule 15.02.2012
comment
+1 согласен, но этот ответ может предложить альтернативу. - person trashgod; 15.02.2012
comment
Можно ли сделать снимок экрана базового компонента и показать его на вышеуказанном компоненте? Какая-то фальшивая прозрачность. - person The Big Lebowski; 15.02.2012
comment
не уверен, что вы имели в виду, проверьте изображение экрана tips4java.wordpress.com /2008/10/13/screen-image от @camickr - person mKorbel; 15.02.2012

В проекте JNA есть несколько утилит для обеспечения прозрачности компонентов AWT. Существует демонстрация WebStart этой функциональности. Утилиты прозрачности окон находятся в файле platform.jar, который дополняет базовый файл jna.jar.

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

person technomage    schedule 15.02.2012