在这个class里面可以把这个inner class当作一般的class来用。如果你没调用这个函数它当然不会被执行。

解决方案 »

  1.   

    public class A{
    int cn;
    A(){cn=0;}
    class B{
    void count(){
    cn++;
    }
    }

    public void count(){
    B b = new B();
    b.count();
    System.out.println(cn);
    }
    static public void  main(String[] args){
    A a=new A();
    a.count();


    }知道是可以的。。
    都没有数据还不如直接写个函数呢。
    不知道 有什么作用
      

  2.   

    代码如下,这只是其中一个类。希望能看懂。。
    import javax.swing.*;
    import java.awt.event.*;
    import java.applet.AudioClip;
    import java.awt.MediaTracker;
    import java.awt.Image;
    import java.awt.Graphics;
    public class SharkAttack extends JApplet implements Runnable
    {private Shark shark=null;
    private SharkPrey prey[]=null;
    private SharkControls guide=null;
    private SwanCounter count=null;private class Arena extends JPanel  //内部类
    {public void paintComponent(Graphics g)
        {super.paintComponent(g);
          g.drawImage(river,0,0,getSize().width,getSize().height,this);
          shark.paintComponent(g);
           for(int i=0;i<prey.length;i++)
          if(prey[i]!=null)
         prey[i].paintComponent(g);    }
    }private class Clicker extends MouseAdapter  //内部类
    {public void mouseClicked(MouseEvent me)
    {guide.setVisible(true);
    guide.toFront();
    }
    }
    private Image river=null,aSwan=null;
    private AudioClip music=null,splash=null;
    private Thread thread=null;
    private Arena arena=new Arena(); //对象arena,不知道这里初始化后此对象里有什么东西public void init()
    {river=getImage(getDocumentBase(),"Images/river.jpg");
    aSwan=getImage(getDocumentBase(),"Images/swan.gif");
    music=getAudioClip(getDocumentBase(),"Audio/jaws.wav");
    splash=getAudioClip(getDocumentBase(),"Audio/splash.wav");
    MediaTracker tracker=new MediaTracker(this);
    tracker.addImage(river,0);tracker.addImage(aSwan,1);

    try
    {tracker.waitForAll();}
    catch(InterruptedException ie)
    {JOptionPane.showMessageDialog(this,"Error");}
    shark=new Shark(this);
    prey=new SharkPrey[10];
    count=new SwanCounter(new ImageIcon(aSwan),prey.length);
    getContentPane().add("Center",new JPanelBox(arena,"捉猫猫"));//对象arena传给JPaneBox对象,这样有什么用?arena对象里面根本就没什么东西。
    getContentPane().add("South",count);
    guide=new SharkControls(this,shark);
    arena.setToolTipText("点这里操作");
    arena.addMouseListener(new Clicker());//Clicker对象传给addMouseListener,同上不知道的。
    }
    public void start()
    {thread=new Thread(this);
    count.reset();
    thread.start();music.loop();
    for(int i=0;i<prey.length;i++)
    prey[i]=new SharkPrey(aSwan,this);
    }
    public void stop()
    {music.stop();count.stop();thread=null;}
    public void run()
    {Thread currentThread=Thread.currentThread();
    while(thread==currentThread)
    {shark.move();
    for(int i=0;i<prey.length;i++)
    if(prey[i]!=null)
    prey[i].move();
    try
    {thread.sleep(200);}
    catch(InterruptedException ie)
    {System.err.println("Error"+ie);}
    for(int i=0;i<prey.length;i++)
    {if((prey[i]!=null)&&(prey[i].isEatenBy(shark)))
    {splash.play();
    prey[i]=null;
    count.remove();
    if(count.getCount()==0)
    stop();

    }
    }
    arena.repaint();//这里arena对象是不是用父类调用???
    }
    }
    }
      

  3.   

    .........
    楼主应该看看java的GUI的相关资料先.
    Arena 是JPanel的子类啊.它就能够被绘制的.paintComponent()方法在此JPanel被绘制时调用.
    JPanelBox是自定义的类,可能它使用了Arena 作为一个视图来显示某些GUI组件吧.
    Clicker继承了MouseAdapter (这是一个适配器,你可以自己看看它实现了那些接口),因此可以成为Arena的Mousese事件监听器,(arena.addMouseListener()),mouseClicked()方法在arena被点击时调用.