Как создать карту Heat для приложений Swing? - PullRequest
0 голосов
/ 08 ноября 2011

Я пытаюсь создать инструмент, который найдет компонент в приложении Swing (например, кнопку или текстовое поле) и выделит его.я думал об использовании идеи тепловых карт для выделения.

Кто-нибудь когда-либо использовал такую ​​вещь и, возможно, может указать, как они могут быть сгенерированы для этой идеи, потому что я не нахожу много соответствующей информации об этом.заранее:)

Ответы [ 2 ]

2 голосов
/ 08 ноября 2011

Ну, если я не пропустил что-то из вашего вопроса, это должно быть довольно легко. Можно установить цвет фона практически всех компонентов Swing. Например, все подклассы javax.swing.JComponent имеют метод setBackground().

Второй шаг - назначить цвет. Для этого вам нужно знать минимальное, максимальное и наблюдаемое значение. Если бы мы вам сделали простую тепловую карту, например от белого до красного, тогда вам просто нужно определить количество красного компонента в спецификации RGB Color. Это можно сделать по формуле:

int red = ((value-min)/(max-min))*255;
Color color = new Color(red, 255, 255)

Затем вы назначаете color в качестве фона для кнопки текстового поля.

0 голосов
/ 08 ноября 2011

Мое предложение не зависит от тепловых карт, но может удовлетворить ваши потребности. Большинство компонентов Swing UI наследуются от JComponent, который имеет: - метод getLocation, который возвращает расположение компонента в родительском кадре - метод getSize, который возвращает размер компонента Вы можете добавить метод к вашему фрейму, который ищет компонент, учитывая его местоположение на фрейме (простой алгоритм обнаружения столкновений поможет)

Как только вы найдете этот компонент, вы можете нарисовать полупрозрачное наложение любого размера (прямоугольник или любую другую форму) в этом месте, используя 2D-графику (см. пример ). Таким образом, вы можете выделить любой компонент в вашем основном фрейме, учитывая его местоположение. Надеюсь, это поможет.

...