我想在T1类调用GameCanves类里面的drawUnit()方法,画出不同位置的方块!import java.awt.*; 
import java.awt.event.*; 
public class T1 extends Frame
{  
 GameCanvas GC;
 public static void main(String[] args)
 {
 
     T1 t = new T1();
     t.show();
 }
 public T1()
 {   
     GC = new GameCanvas();
     this.setSize( 800,600 ) ;
              this.addWindowListener(new winclose());
              this.setVisible(true);
              add(GC);
      
       
       
 } 
}
class GameCanvas extends Canvas
{
 public void paint(Graphics g)
 { 
     drawUnit(100,100);
 }public void drawUnit(int i,int j){  Graphics g = getGraphics(); 
 g.setColor(Color.blue); 
 g.fill3DRect(i,j,20,20,true); } 
}class winclose extends WindowAdapter
{
   public void windowClosing(WindowEvent e)
   {
       System.exit(0);
   }
}

解决方案 »

  1.   

    package csdn.dec;import java.awt.*; 
    import java.awt.event.*; 
    public class T1 extends Frame
    {  
    final GameCanvas GC;
     public static void main(String[] args)
     {
     
         T1 t = new T1();
         t.show();
     }
     public T1()
     {   
          GC = new GameCanvas();
         
         this.setSize( 800,600 ) ;
                  this.addWindowListener(new winclose());
                  this.setVisible(true);
                  add(GC);
                 // final  
                  GC.addMouseListener(new MouseListener(){
                   public void mouseClicked(MouseEvent e){
                
                   }  ;
                     public void mousePressed(MouseEvent e){
                      int x,y;
                      x  =  e.getX();
                      y  =  e.getY();
                      GC.drawUnit(x,y);
                     };
                     public void mouseReleased(MouseEvent e){
                     
                     };
                     public void mouseEntered(MouseEvent e){
                     
                     };
                     public void mouseExited(MouseEvent e){
                     
                     };
                  });
          
           
           
     } 
    }
    class GameCanvas extends Canvas
    {
     public void paint(Graphics g)
     { 
         drawUnit(400,400);
     }public void drawUnit(int i,int j){  Graphics g = getGraphics(); 
     g.setColor(Color.blue); 
     g.fill3DRect(i,j,20,20,true); } 
    }class winclose extends WindowAdapter
    {
       public void windowClosing(WindowEvent e)
       {
          System.exit(0);
       }
    }
      

  2.   

    可以,但如果不用Listener!怎样在T1类调用GameCanves类里面的drawUnit?
      

  3.   

    public static void main(String[] args)
     {
     
         T1 t = new T1();
         t.GC.drawUnit(111,222);//写这里就可以了 
        
         
         
     }
      

  4.   

    这样可以!
     public static void main(String[] args)
     {
     
         T1 t = new T1();
         GC.drawUnit(10,200);
         t.show();
     }
     public T1()
     {   
          GC = new GameCanvas();
          this.add(GC);
          this.setSize( 800,600 ) ;
          this.addWindowListener(new winclose());
          this.setVisible(true);
     
     } 
    }