2011-09-03 138 views
3

正如標題所暗示的,我試圖將一個動作監聽器添加到窗口上的基本形狀。我想知道這是否有可能?當我嘗試添加偵聽器時出現錯誤。將鼠標監聽器添加到Java中的矩形中

public static void main(String args[]) { 
    JFrame frame = new Main(); 
    frame.setSize(300, 200); 
    frame.setVisible(true); 
    frame.setBackground(Color.BLUE); 
} 

Rectangle2D rect = new Rectangle2D.Double(60, 70, 120, 80); 

public void paint(Graphics g) { 
    Graphics2D g1 = (Graphics2D)g; 
    g1.draw(rect); 
    g1.setPaint(Color.yellow); 
    g1.fill(rect); 
} 

Handlerclass handle = new Handlerclass(); 
rect.addMouseListener(handle); 

public class Handlerclass implements MouseListener{ 
    public void mouseClicked (MouseEvent e){ 
    } 
} 
+0

請勿在其繪畫方法中直接在您的JFrame中繪製。而是在JFrame的contentPane中保存一個JPanel,或者在JFrame的contentPane中繪製,然後在其paintComponent方法中執行繪圖。 –

回答

7

您不能將鼠標偵聽器添加到該對象。如果您嘗試檢測其中的鼠標單擊,則您希望將鼠標偵聽器添加到您正在繪製該形狀的任何Swing容器中,然後使用contains...intersects...方法之一。

當您有機會時,請查閱Rectangle2D的文檔。