import java.awt.*;
import java.awt.event.*;
public class Myframe extends Frame
{
public static void main(String args[])
{
Myframe f = new Myframe();
f.addMouseListener(new mouseclick());
}
public void paint(int X,int Y)      /////   2
{
/*----------*/
}
}
class mouseclick extends MouseAdapter
{
public void mouseClicked(MouseEvent e)
{

paint(e.getX(),e.getY());    ////  1
}
}
这个程序中1要访问2那里的paint函数要怎么做?这个程序总是报错~说不能识别paint方法!要怎么改写~`谢谢各位!

解决方案 »

  1.   

    你可以把Myframe作为参数传给mouseclick:public class Myframe extends Frame {
        public static void main(String args[]) {
            Myframe f = new Myframe();
            f.addMouseListener(new mouseclick(f));
        }
        public void paint(int X,int Y)      /////   2
        {
            /*----------*/
        }
    }
    class mouseclick extends MouseAdapter {
        private Myframe f = null;
        public mouseclick(Myframe f){
            this.f = f;
        }
        public void mouseClicked(MouseEvent e) {
            f.paint(e.getX(),e.getY());    ////  1
        }
    }也可以把在Myframe类中实现MouseListener接口:public class Myframe extends Frame implements MouseListener {
        public Myframe(){
            this.addMouseListener(this);
        }
        
        public static void main(String args[]) {
            new Myframe();
        }
        public void paint(int X,int Y)      /////   2
        {
            /*----------*/
        }    public void mouseClicked(MouseEvent e) {
            paint(e.getX(),e.getY());    ////  1
        }    public void mousePressed(MouseEvent e) {
        }    public void mouseReleased(MouseEvent e) {
        }    public void mouseEntered(MouseEvent e) {
        }    public void mouseExited(MouseEvent e) {
        }
    }