要求:
编写程序在鼠标点击处绘制一个固定大小的圆形及该圆的外接矩形import java.awt.*;
import java.awt.event.*;
import javax.swing.*;class MyJFrame  extends JFrame
{
public MyJFrame()
{
setTitle("画圆和矩形");
setSize(300,200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container c=getContentPane();
c.add(new ShapesPanel());
}
}
class ShapesPanel extends JPanel
{
int x,y;
ShapesPanel()
{
addMouseListener(new MyMouselistener());
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
g.fillOval(x,y,50,50);
g.fillRect(x,y,100,100);

}
private class MyMouselistener implements MouseListener
{
//int x,y;
public void mouseClicked(MouseEvent me)
{
x=me.getX();
y=me.getY();
repaint();
 }
}
}
class MyDraw
{
public static void main (String args[])
{
MyJFrame frame = new MyJFrame();
frame.show();
}          
}

运行后提示错误:
MyDraw.java:29: ShapesPanel.MyMouselistener is not abstract and does not overrid
e abstract method mouseReleased(java.awt.event.MouseEvent) in java.awt.event.Mou
seListener
        private class MyMouselistener implements MouseListener
                ^
1 error
不知哪有问题?

解决方案 »

  1.   

    mouseListener接口里面有好几个函数
    如果不用,也要继承下来啊!
      

  2.   

    class MyMouselistener
    不能为私有
      

  3.   

    因为你implements MouseListener,所以,必须实现它(MouseListener)的其他函数,(即使为空函数),在类private class MyMouselistener 中增加以下空函数,就没有问题了
    public void mouseEntered(MouseEvent e) {}
     public void mouseExited(MouseEvent e) {}
     public void mousePressed(MouseEvent e) {}
     public void mouseReleased(MouseEvent e) {}
      

  4.   

    MouseListener中的所有的方法都必须被overide,否则那些方法在子类中还是abstract,可以继承MouseAdapter来避免这个问题