import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class  TMouse extends JApplet implements MouseListener{
Container con;
int width,height;
int x,y;
int flag; public void init(){
con=this.getContentPane(); x=y=0;
width=height=2; flag=0; con.addMouseListener(this);
} public void update(Graphics g){
g.setColor(this.getBackground());
g.fillRect(0,0,
getWidth(),
getHeight());
paint(g);
} public void paint(Graphics g){

g.setColor(Color.blue);
g.drawString("Click the MouseButton ....",5,20);
g.setColor(Color.red); if(flag==1)
g.drawString("Mouse Entered Applet",5,80);

} public void mouseEntered(MouseEvent me){
flag=1;
repaint();
} public void mouseExited(MouseEvent me){
flag=2;
repaint();
} public void mouseClicked(MouseEvent me){
flag=3;
x=me.getX();
y=me.getY();
repaint();
} public void mousePressed(MouseEvent me){
flag=4;
x=me.getX();
y=me.getY();
repaint();
} public void mouseReleased(MouseEvent me){
flag=5;
x=me.getX();
y=me.getY();
repaint();
}
}
/*
<Applet Code=TMouse  width=400  height=200>
</Applet>
*/内容没有被覆盖啊,后来在update()中 加入了打印语句,也未见执行,repaint() ->update()->paint() 应该是这个顺序的,可是为何不见update()方法的执行呢?

解决方案 »

  1.   

    虽然解决了刷新面板的问题,但还不能明白为啥 update()方法为何没有调用
    有说是java线程的问题,不知道对不对?
    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    public class  TMouse extends JApplet implements MouseListener{
    Container con;
    int width,height;
    int x,y;
    int flag;    @Override
    public void init(){    
         con=this.getContentPane(); x=0;
            y=0;
    width=20;
            height=20; flag=0;
             con.addMouseListener(this);
    }    @Override
    public void update(Graphics g){
            System.out.println("s");
    g.setColor(Color.yellow);
    g.fillRect(0,0,this.getWidth(),this.getHeight());
            paint(g);            

    }    @Override
    public void paint(Graphics g){
    super.paint(g);
    g.setColor(Color.blue);
    g.drawString("Click the MouseButton ....",5,20);
    g.setColor(Color.red); if(flag==1)
    g.drawString("Mouse Entered Applet",5,80); else if(flag==2)
    g.drawString("Mouse Exited Applet",5,80); else if(flag==3){
                            g.drawString("Mouse Entered Applet",5,80);
    g.fillRect(x,y,width,height);
    g.drawString("Click Here!",x,y);
    } else if(flag==4){
    g.drawString("Mouse Entered Applet",5,80);
    g.fillRect(x,y,width,height);
    g.drawString("Pressed Here!",x,y);
    } else if(flag==5){
    g.drawString("Mouse Entered Applet",5,80);
    g.fillRect(x,y,width,height);
    g.drawString("Mouse Released!",x,y);
    }
    }    @Override
    public void mouseEntered(MouseEvent me){
    flag=1;
    repaint(0,0,0,getWidth(),getHeight());
    }    @Override
    public void mouseExited(MouseEvent me){
    flag=2;
    repaint(0,0,0,getWidth(),getHeight());
    }    @Override
    public void mouseClicked(MouseEvent me){
    flag=3;
    x=me.getX();
    y=me.getY();
    repaint();
    }    @Override
    public void mousePressed(MouseEvent me){
    flag=4;
    x=me.getX();
    y=me.getY();
    repaint();
    }    @Override
    public void mouseReleased(MouseEvent me){
    flag=5;
    x=me.getX();
    y=me.getY();
    repaint();
    }
    }
    /*
    <Applet Code=TMouse  width=400  height=200>
    </Applet>
    */