Java 正弦波 jzxb.java

程序设计:谢山水 2003.11.11.



// Java 正弦波 jzxb.java 程序设计: 谢山水 2003.11.11.
// Java 正弦波:线宽、颜色、分段颜色、背景色、波峰数、显示速度
// 画图方向:向左画、向右画、向上画、向下画、同时向右和向下画
// 位置:水平、垂直多条正弦波

import java.awt.*;

// 1.正弦波 jzxb 类继承框架 Frame
public class jzxb extends Frame { 

public jzxb() {
setLayout(new BorderLayout()); // 设置边界布局
DrawPanel dp = new DrawPanel(); // 创建画图面板实例 dp
add("Center", dp); // 对中加入画图面板 dp


// 2.关闭窗口,终止程序
public boolean handleEvent(Event e) {
switch (e.id) {
case Event.WINDOW_DESTROY: // 窗口关闭
System.exit(0); // 系统退出,终止程序
return true;
default:
return false;
}
}


// 3.程序入口
public static void main(String args[]) {
jzxb zxb = new jzxb();
zxb.setTitle("Java 语言图形程序设计 正弦波 谢山水 2003.11.11.");
zxb.setSize(800,600);
zxb.show();
}
}

// 4.定义求上正弦函数的方法
class DrawPanel extends Panel {
double f2(double x){ // 中正弦波
return 280-Math.sin(x/40)*40;
}

double f3(double x){ //下正弦波
return 420-Math.sin(x/10)*50;
}

// 5.定义画图方法 
public void paint(Graphics g) { 

// 6.画图纸边框和水平轴线
g.setColor(new Color(255,0,155));//设置画笔为紫色
g.drawRect(5,5,780,540); // 画图纸外边框
g.setColor(new Color(0,133,255));//设置画笔为蓝色
g.drawRect(15,15,760,520); // 画图纸内边框
g.drawRect(16,16,758,518);
g.drawRect(17,17,756,516);
g.drawRect(18,18,754,514);
g.setColor(new Color(255,255,0));//设置画笔为黄色
g.drawLine(50,280,730,280); // 画中水平轴线 
g.drawLine(50,281,730,281);
g.setColor(new Color(0,133,255)); //设置画笔为蓝色
g.drawLine(50,419,730,419); // 画下水平轴线
g.drawLine(50,420,730,420);
g.drawLine(50,421,730,421);

// 7.输出文字 
Font fnt20 = new Font("TimesRoman",Font.PLAIN,20);
Font fnt40 = new Font("宋体",Font.BOLD,40); // 创建字体对象

g.setFont(fnt20); // 设置当前字体
g.setColor(new Color(255,0,255));
g.drawString("Java TXCXSJ",340,80); // 紫字

g.setFont(fnt40); // 设置当前字体
g.setColor(new Color(0,0,255));
g.drawString("Java 语言图形程序设计",190,130);// 蓝字

g.setFont(fnt20); // 设置当前字体
g.setColor(new Color(255,255,0));
g.drawString("程序设计: 谢山水",320,170); // 黄字
g.drawString("2003年11月11日",340,200);


// 8.循环设置颜色
for(int i=0;i<30;i++){
switch((int) i/10){
case 0:
g.setColor(new Color(0,133,255)); //设置画笔为蓝色
setBackground(Color.yellow); //设置背景为黄色
break;
case 1:
g.setColor(new Color(255,255,0)); //设置画笔为黄色
setBackground(Color.orange); //设置背景为橙色
break;
case 2:
g.setColor(new Color(255,0,155)); //设置画笔为红色
setBackground(new Color(0,190,0)); //设置背景为绿色
break;
}


// 9.绘制正弦波
for(int x=0;x<=628;x++){ //中正弦波
for (int h=-8;h<9;h+=4){
g.drawLine((int)x+85,(int)f2(x)+h,(int)x+86,(int)f2(x+1)+h);


for(int x=0;x<=628;x++){ //下正弦波
for (int h=0;h<5;h++){
g.drawLine((int)x+85,(int)f3(x)+h,(int)x+86,(int)f3(x+1)+h);
}
}

}
}
}