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