2011-11-23 61 views
0

我需要在Canvas的不同位置上動態繪製圖形元素(方形),並且需要聽取鼠標點擊以更改我的廣場的位置。 如何將鼠標監聽器添加到Graphics對象?我必須使用另一種方法嗎?如何創建將響應鼠標點擊的java swing圖形對象?

int x = 0; 
int y = 0; 
Graphics g = getGraphics(); // get Graphics context 
        g.setColor(Color.red); 
      g.fillRect(x - 25, y - 15, 60, 30); 
      g.setColor(Color.black); 
      g.drawRect(x - 25, y - 15, 60, 30); 
        g.dispose(); 

回答

1

我可能會使用JPanel作爲您的較大組件的子元素,它形成畫布。由於JPanel是JComponent的子類,因此它允許您通過addMouseListener()添加鼠標偵聽器,並覆蓋其paintComponent()方法。

如果您想移動方塊,只需重新定位JPanel。

(對於這個問題,如果它是一個正方形或長方形,你甚至都不需要重寫paintComponent,你可以只用給setBorder和的setBackground適當調用做到這一點。)


另一種方法是將JPanel用作整個畫布,重寫paintComponent以繪製任何你喜歡的東西,在JPanel上添加addMouseListener,然後手動確定鼠標偵聽器事件是否發生在圖形元素的幾何圖形內。

+0

我認爲冷杉方法是最簡單的方法。因爲不需要進行長時間的計算來確定哪個對象在畫布上佔據特定的位置。我可以用它來添加到畫布(父)圖形元素(子),如環,橢圓?任何代碼示例? –

+0

我猜他的建議只適用於廣場。如果你會畫出其他東西,你需要堅持第二種方法。 – javydreamercsw