所以我在我的JPanel上绘制了3个矩形作为按钮,我想要做的是当鼠标悬停在其中一个上时,Jpanel将重新绘制,并将该矩形的颜色更改为红色。
我能想到的唯一方法是使用3个单独的变量来确定鼠标是否在每个组件上。然后在重绘方法中会有代码,如果rect1hover为true,则使用g.setColor绘制为红色。
@Override
public void mouseMoved(MouseEvent e) {
if(rect1.contains(e.getX(), e.getY())){
rect1hover = true;
}
}
但这似乎效率低下。有更好的方法吗?
答案 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。