这个java小程序显示函数y=sin(x)曲线,很简单,但能支持两种方式运行:控制台命令方式与
Applet方式,所以有两个类 MyFrame及drawPict,但编译产生了三个类:
          MyFrame.class
          drawPict.class
          drawPict$1.class
          曾也出现过MyFrame1$1.class
这个 ....$1.class 删除就不能运行了。这是个什么东东?

解决方案 »

  1.   

    //  drawPict.java --------------------------------
    import java.lang.*;       // Math
    import java.awt.*;        // Color
    import java.awt.Graphics; // Graphics
    import java.awt.event.*;class MyFrame extends Frame 
     {
          MyFrame(String title) 
             {
                super(title);
             }
          static double f(double x)       // sin()函数计算
             {
         return (Math.sin(x));
             }
          public static void draw(Graphics g,int w,int h) 
            {                         // 画sin()的曲线
                double ky=150.0;
                g.setColor(Color.red);
                double x0=0,dx=0.05;
                int ly=0;
                for (int i = 0;i<w;i++) 
                  {
                    int y=(int)(ky*f(x0));
                    y=240-y;     
                    if (i>0)
                   g.drawLine(i,ly,i+1,y);
                    x0=x0+dx;ly=y;
                  }
             }
          public void paint(Graphics g)
             {
                draw(g,getWidth(),getHeight());
             }

    //-------------------------------------------------------------------------
    public class drawPict extends java.applet.Applet
    {
        public static void main(String args[])      // 控制台方式入口
         {
            Frame win1=new MyFrame("Frame1");
            win1.addWindowListener(new
                 WindowAdapter()
                   {
                     public void windowClosing(WindowEvent e)
                       {
                         System.exit( 0 );
                       }
                   });
            int w=640,h=480;
            win1.setSize(w,h);
            win1.setLocation(100,100); 
            win1.setVisible(true); 
            win1.show();
         }
        public void paint(Graphics g) 
         {
            MyFrame.draw(g,getSize().width,getSize().height);
         }
    }
      

  2.   

    drawPict 里面的匿名类      
          new   WindowAdapter()
                   {
                     public void windowClosing(WindowEvent e)
                       {
                         System.exit( 0 );
                       }
                   }
    另外内部类也会生成.class
      

  3.   

    win1.addWindowListener(new
                 WindowAdapter()
                   {
                     public void windowClosing(WindowEvent e)
                       {
                         System.exit( 0 );
                       }
                   });以上程序中用了匿名类。
      

  4.   

    的确:这个匿名类放在Frame的构造函数中,就会产生MyFrame$1.class,
                也可放在Applet的main()中,就会产生drawPict$1.class
    难怪匿名类放的位置不同产生的.class也不一样!
    多谢!
      

  5.   

    我是JAVA初学者,这个程序编了我几天,总算成功了.