我有一张地图图片。当用户单击按钮时,我想在地图的某个位置上放置一个红色方框作为突出显示,如下所示:
如何突出显示这样的部分? 目前,我正在通过创建一个新的图像来突出显示该区域,并在用户单击按钮时加载该图像来实现此目的。但是,在这种情况下,我必须开发66张图像并为每个按钮加载一张图像。
答案 0 :(得分:1)
扩展JLabel
进行自定义绘画。
您将保留要绘制的ArrayList
中的Rectangles
。单击按钮时,将Rectangle
添加到ArrayList
。然后,在paintComponent(...)
方法中,您遍历ArrayList
以绘制每个Rectangle
。
因此,对JLabel
扩展名的基本更改是:
private ArrayList<Rectangle> rectangles = new ArrayList<Rectangle>();
...
@Override
protected void paintComponent(Graphics g)
{
super.paintComponent(g);
for (Rectangle r: rectangles)
{
g.setColor( Color.RED );
g.drawRect(...);
}
}
public void addRectangle(Rectangle r)
{
rectangles.add( r );
}
有关此方法的有效示例,请查看在Custom Painting Approaches中找到的DrawOnComponent
示例。
另一个选择可能是使用JLayer在JLabel上绘制矩形。阅读How to Decorate Component With the JLayer Class的Swing教程中的部分,获取一些工作示例。
无论哪种方式,您都需要进行自定义绘画。尝试两种方法以查看您更喜欢哪种。