你的类继承Panel或JPanel了吧?
1  xxx.getGraphics().drawOval(0,0,10);
2  xxx.addMouseListener(new MouseAdapter(){public void mouseClicked(MouseEvent e){...}});其中xxx为继承Panel或JPanel类的实例

解决方案 »

  1.   

    你的类继承Panel或JPanel了吧?
    1  xxx.getGraphics().drawOval(0,0,10);
    2  xxx.addMouseListener(new MouseAdapter(){public void mouseClicked(MouseEvent e){...}});其中xxx为继承Panel或JPanel类的实例
      

  2.   

    我的类没有继承panel或Jpanel类
    而是class SketchView extends JComponent implements Observer
    这个文件的唯一的类SketchView.java
    在它之下还声明了一个类
    class MouseHandler extends MouseInputAdapter
    里面有public void mousePressed(MouseEvent e)方法来接收鼠标的单击
    事件,并在这个方法里判断是单击的那个按钮,并做出反应。
    不知道与你讲的是否一个作用。
      

  3.   

    重载paint()后,以后调用repaint()就是调用paint()方法了。
    这样所有东西都将重画,包括已画好的东西。
      

  4.   

    嗯,
    包括已画好的,那在repaint()方法中是不是只画出要改变的地方就行呢
    已画好的就不用再画一遍了。
      

  5.   

    你可以重载 public void update(Graphics g)方法,在它的里面直接调用
    paint(Graphics g)方法,如下所示:
    public void update(Graphics g)
    {
        paint(g);
    }
    这样的话只要在paint()方法中画出改变的地方就可以了。
    因为repaint()其实是启动一个新的线程来调用update(),然后update()再调用paint()函数,而默认情况下调用update()将清除整个屏幕区域然后让paint()来重绘,所以只要直接调用paint()就可以不清除屏幕上以前画的图形了。