确定正在悬停的形状 - Java

时间:2013-06-24 18:24:34

标签: java swing hover paint highlight

所以我在我的JPanel上绘制了3个矩形作为按钮,我想要做的是当鼠标悬停在其中一个上时,Jpanel将重新绘制,并将该矩形的颜色更改为红色。

我能想到的唯一方法是使用3个单独的变量来确定鼠标是否在每个组件上。然后在重绘方法中会有代码,如果rect1hover为true,则使用g.setColor绘制为红色。

@Override
public void mouseMoved(MouseEvent e) {
       if(rect1.contains(e.getX(), e.getY())){
           rect1hover = true;
       }
}

但这似乎效率低下。有更好的方法吗?

2 个答案:

答案 0 :(得分:1)

不确定。将绘制的矩形放在List中。然后你可以编写这段代码。

@Override
public void mouseMoved(MouseEvent e) {
    for (DrawnRectangle r : rectangles) {
       if (r.contains(e.getX(), e.getY())){
           r.setHoverBackground();
       }
    }
}

您必须使用DrawnRectangle方法创建setHoverBackground课程。

答案 1 :(得分:0)

您可以使用真实组件,然后只需将MouseListener添加到每个组件,您无需进行任何查找或自定义绘画。

有关详细信息,请参阅Playing With Shapes