Главная > Java | Java labs > Прозрачность окон для курсора в Java

Прозрачность окон для курсора в Java

08.06.2012 0 коммент. » Просмотры: 1 598
 

Сегодня увидел на хабре эту статью: Окна «неправильной» формы, Java 6 & 7 ed и вспомнил, что месяца три назад, я игрался с захватом изображения с экрана и столкнулся с задачей, сделать "прозрачное окно" для курсора, т.е. чтобы я мог, например, нажать на ссылку расположенную под "окном захвата".

Окно захвата должно было представлять из себя прямоугольник двигающийся повсюду за курсором мыши.

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

Выглядит это так:

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

Как же такое реализовать, если отрисовка на десктопе невозможна, и передача клика под окно тоже?

Как говорится, "голь на выдумки хитра", поэтому с моими небольшими знаниями Java, я сделал так: каждая рамка (всего их 4-е) представляет из себя 2х пиксельный JFrame, т.е. я создал дополнительно 4е окна, убрал у них контролы и покрасил в черный цвет. А дальше осталось их только объединить в один класс для удобства. Такой вот я изобрел костыль:

Я не претендую на Премию Тьюринга, но возможно, этот способ так же кому-то пригодится.

Полный код софтинки со скриншота тут: ScreenZoom

Автор: | Теги:

Важно

У нас заработал ФОРУМ. Все вопросы, которые не касаются статьи, а так же вопросы по конкретно вашему случаю нужно задавать и обсуждать именно там, в разделе "Помощь пользователям".

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Разрешены HTML-теги: <a>, <code>, <i>, <em>, <strong>, <b>, <u>, <strike>