我正在尝试构建一个工具来定位 Swing 应用程序上的组件(例如按钮或文本字段)并“突出显示它”。我正在考虑使用热图的想法来突出显示。
有没有人用过这样的东西,也许可以指出如何为这个想法生成它们,因为我没有找到很多与此相关的信息。
我在这里先向您的帮助表示感谢 :)
好吧,除非我错过了您的问题中的某些内容,否则这应该很容易。几乎可以设置所有 Swing 组件的背景颜色。例如,所有的子类javax.swing.JComponent
都有一个setBackground()
方法。
第二步是实际分配颜色。为此,您需要知道最小值、最大值和观察值。如果我们要制作一个简单的热图,例如白色到红色,那么您只需要确定 RGBColor
规范中红色分量的数量。这可以通过以下公式完成:
int red = ((value-min)/(max-min))*255;
Color color = new Color(red, 255, 255)
然后,您将其指定color
为文本字段按钮的背景。
我的建议不依赖于热图,但可能适合您的需求。大多数 Swing UI 组件都继承自 JComponent,它具有: - 一个getLocation
返回组件在父框架上的位置的getSize
方法 - 一个返回组件大小的方法 您可以在框架中添加一个方法来查找给定位置的组件在框架上(一个简单的碰撞检测算法会有所帮助)
找到该组件后,您可以使用 2D 图形在该位置绘制任意大小(矩形或任何其他形状)的半透明叠加层(参见示例)。这样,您可以在给定位置的情况下勾勒出主框架上的任何组件。我希望这有帮助。