2011-09-03 85 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的文档。