2013-06-24 16 views
0

所以我在我的JPanel上繪製了3個矩形,它們充當按鈕,我想要做的是當鼠標懸停在其中一個上時,Jpanel將重新繪製,並將僅該矩形的顏色更改爲紅色。確定哪個形狀被懸停 - Java

我認爲這樣做的唯一方法是有3個獨立的變量來確定鼠標是否在每個組件上。然後在repaint方法中會有代碼,如果rect1hover爲true,則使用g.setColor繪製紅色。

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

但是,這看起來效率很低。有一個更好的方法嗎?

回答

1

當然。將您繪製的矩形放在List中。然後你可以寫這個代碼。

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

你必須創建一個DrawnRectangle類與setHoverBackground方法。

0

您可以使用真實組件,然後只需向每個組件添加一個MouseListener,並且不需要執行任何查找或自定義繪畫。

查看Playing With Shapes瞭解更多信息。