这个java小程序显示函数y=sin(x)曲线,很简单,但能支持两种方式运行:控制台命令方式与
Applet方式,所以有两个类 MyFrame及drawPict,但编译产生了三个类:
MyFrame.class
drawPict.class
drawPict$1.class
曾也出现过MyFrame1$1.class
这个 ....$1.class 删除就不能运行了。这是个什么东东?
Applet方式,所以有两个类 MyFrame及drawPict,但编译产生了三个类:
MyFrame.class
drawPict.class
drawPict$1.class
曾也出现过MyFrame1$1.class
这个 ....$1.class 删除就不能运行了。这是个什么东东?
解决方案 »
- javase代码有错,谁能调试?
- addActionListener() 提示警告:构造函数中泄漏this
- 关于陈宝峰Java视频教程录制内容的有奖调查
- 请问,为什么我的所有office工具打开的相关文档都成了只读文件呢?
- 在Linux下该如何访问Windows分区下的数据?急
- 在JAVA中能否象Delphi一样在参数前加一个Var,将值传回来!
- 在jsp页面怎么调用action的get方法?
- JAVA JODBC中怎样连续操作两个(或以上)的SQL语句
- jdk的问题?
- 有关IO流
- 能否根据一个JLabel上显示的字符串的长度来设置一下它的大小
- 怎么用程序实现Word的修订标记功能,以类似方式显示删除和添加的文字。
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);
}
}
new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit( 0 );
}
}
另外内部类也会生成.class
WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit( 0 );
}
});以上程序中用了匿名类。
也可放在Applet的main()中,就会产生drawPict$1.class
难怪匿名类放的位置不同产生的.class也不一样!
多谢!