Забудьте о GlassPane
, есть еще один 100% нативный способ Java сделать это, который работает как в OS X, так и в Windows.
Java всегда поддерживает полупрозрачность для своих окон в OS X, а Java теперь поддерживает полупрозрачность и для своих окон в Windows (начиная с версии Java 1.6.0_10 или около того, необходимо проверить).
Уловка такова: щелкнув инструмент «выбрать цвет», вы создадите почти прозрачное окно Java без полей, покрывающее весь экран. Вы устанавливаете его альфа на 10 (альфа изменяется от 0 до 255). Эта альфа настолько мала, что пользователь не заметит очень тонкого «почти прозрачного, но только очень-очень-полупрозрачного» окна без полей, покрывающего весь экран.
Теперь, когда пользователь щелкает по вашему «альфа-каналу с 10 полупрозрачным окном без полей», покрывающим весь экран, вы получаете (x, y).
Откажитесь от окна Java без полей.
Используйте getRgb(x,y)
Robot
, и все готово.
Почему установить альфа на 10, а не на 0? Потому что в противном случае щелчки не перехватываются Java, а идут непосредственно в ОС (по крайней мере, так это работает в OS X). Есть порог, и я знаю, что он не установлен ни на «1», ни на «2», а около 10 или около того.
РЕДАКТИРОВАТЬ. Я только что понял, что вы знаете, что нужно выбрать несколько цветов. Это сложнее, но все же можно сделать на 100% Java. Либо вы можете жить со слегка размытыми цветами (затронутыми «почти прозрачным», «невидимым» слоем) , либо, получив щелчок, вы должны удалить слой, получить правильный цвет пикселей и снова поставить «почти прозрачный» слой. Конечно, это чертовски крутой хакер, но это можно сделать на 100% Java.
person
SyntaxT3rr0r
schedule
10.03.2010