0

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

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

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

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

4

2 回答 2

1

当然。将绘制的矩形放入List. 然后你就可以编写这段代码了。

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

您必须使用方法创建一个DrawnRectanglesetHoverBackground

于 2013-06-24T18:32:38.893 回答
0

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

有关更多信息,请参阅使用形状

于 2013-06-24T19:50:14.087 回答