0

したがって、JPanel にボタンとして機能する 3 つの四角形が描画されています。マウスをそのうちの 1 つに合わせると、Jpanel が再描画され、その四角形のみの色が赤に変わります。

私が考えることができる唯一の方法は、マウスが各コンポーネントの上にあるかどうかを決定する3つの個別の変数を持つことです。次に、repaint メソッドにコードがあり、rect1hover が true の場合、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();
       }
    }
}

DrawnRectangleメソッドを使用してクラスを作成する必要がありますsetHoverBackground

于 2013-06-24T18:32:38.893 に答える