在看内部类时,感觉不知道什么情况可以用到他,知道有内部类,就是不会用。学这个一点感觉都没有,请高手指点指点。
谢谢 。

解决方案 »

  1.   

    我给你发一个小例子!你试着修改看看!
    也许对你有帮助!
    import java.awt.*;
    import java.awt.event.*;public class area_1
    {
    public static void main(String[] args)
    {
          Win win=new Win();
          win.setBounds(100,100,200,100);
          win.setVisible(true);
          win.addWindowListener(new WindowAdapter()
           {
            public void windowClosing(WindowEvent e)
             {
            System.exit(0);
            }
            });
    }
    static class Win extends Frame implements ActionListener
    {  MenuBar bar=null;
      Menu menu=null;
      MenuItem item1,item2;
      yuan circle;
      sanjiaoxing trangle;  public Win()
      {
         bar=new MenuBar();
         menu=new Menu("选择");
         item1=new MenuItem("圆计算面积");
         item2=new MenuItem("三角形计算面积");
         menu.add(item1);
         menu.add(item2);
         bar.add(menu);
         circle=new yuan();
         trangle=new sanjiaoxing();
         item1.addActionListener(this);
         item2.addActionListener(this);
         setMenuBar(bar);
         setVisible(true);
         setBounds(100,120,100,90);
      }  public void actionPerformed(ActionEvent e)
      {
         if(e.getSource()==item1)
         {
           removeAll();//移去原来所有组件
           add(circle,BorderLayout.CENTER);//添加圆计算面板
           validate();//保证所有添加的组件可见
         }
         else if(e.getSource()==item2)
         {
           removeAll();
           add(trangle,BorderLayout.CENTER);
           validate();
         }  }  class yuan extends Panel implements ActionListener
      {
    double r=0,area;
    TextField banjin,result_text;
       Button b=null;   public yuan()
       {
          banjin=new TextField(10);
         result_text=new TextField(10);
         b=new Button("确定");
         add(new Label("请输入半径"));
         add(banjin);
         add(result_text);
         add(b);
          b.addActionListener(this);
       }   public void actionPerformed(ActionEvent e)
       {
       try
           {
           r=Double.parseDouble(banjin.getText());
            area=Math.PI*r*r;
            result_text.setText(""+area);
          }
           catch(Exception ee)
           {
            banjin.setText("请输入数字字符");
           }
        }
      }
      class sanjiaoxing extends Panel implements ActionListener //负责计算三角形的面积
      {
        double a=0,b=0,c=0,area=0;
        TextField bian1=new TextField(6);
        TextField bian2=new TextField(6);
        TextField bian3=new TextField(6);
        TextField result_text_s =new TextField(12);
        Button button=new Button("确定");    sanjiaoxing()
        {
         add(new Label("请输入三边的长度"));
         add(bian1);
         add(bian2);
         add(bian3);
         add(button);
         button.addActionListener(this);
         add(new Label("三角形的面积是:"));
         add(result_text_s);
        }    public void actionPerformed(ActionEvent e)
        {
          try
          {
            a=Double.parseDouble(bian1.getText());
             b=Double.parseDouble(bian2.getText());
             c=Double.parseDouble(bian3.getText());
             if(a+b>c&&a+c>b&&b+c>a)
             {
               double p=(a+b+c)/2;
               area=Math.sqrt(p*(p-a)*(p-b)*(p-c));
               result_text_s.setText(""+area);
             }
             else
             {
               result_text_s.setText("你输入的三边不能形成三角形");
             }
          }
          catch(Exception ee)
          {
             result_text_s.setText("请输入数字字符");
          }
        }
      }
    }
    }
      

  2.   

    HashMap等有内部类,你可以看下
      

  3.   

    ybjroam05(月蒙影)
     
    你会不会把楼主搞得更晕阿
      

  4.   

    例如简单例子:
    public class A{
       int  age;
       public A(int a){
             age = a;
    }
       public void setAge(int A_age){
              age = A_age;
    }
       public int getAge(){
              return age;
    }
    }
      class Test{
       public static void main(String [] args){
                A  n=new A(30);
                 System.out.println(n.getAge());
    }
    }
       其中class Test 就是内部类 它就是调用上面A类的方法。
      

  5.   

    .java:15: inner classes cannot have static declarations
      

  6.   

    同意楼上的 main方法是static的 单age是int的
      

  7.   

    class A {
       class B {}   public void f() {
          class C {}
       }
       
       A a=new A(){};
       
    }