Java 正弦波 jvzxb.java
程序设计:谢山水 2003.10.
// Java 正弦波 jvzxb.java 程序设计: 谢山水
2003.10.
// Java 正弦波:线宽、颜色、分段颜色、背景色、波峰数、显示速度
// 画图方向:向左画、向右画、向上画、向下画、同时向右和向下画
// 位置:水平、垂直多条Java 正弦波
import java.awt.*;
// 1.正弦波 jvzxb 类继承框架 Frame
public class jvzxb extends Frame {
public jvzxb() {
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[]) {
jvzxb zxb = new jvzxb();
zxb.setTitle("Java 语言图形程序设计 正弦波
谢山水 2003.10.");
zxb.setSize(800,600);
zxb.show();
}
}
// 4.定义求上正弦函数的方法
class DrawPanel extends Panel {
double f1(double x){ // 上正弦波
return 180+Math.sin(x/20)*30;
// 调整垂直位置,波峰数,波幅度
}
double f2(double x){ // 中正弦波
return 280+Math.sin(x/10)*40;
}
double f3(double x){ //下正弦波
return 420+Math.sin(x/5)*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,0,255));//设置画笔为紫色
g.drawLine(50,180,730,180); // 画上水平轴线
g.setColor(new Color(255,255,0));//设置画笔为黄色
g.drawLine(50,280,730,280); // 画中水平轴线
g.drawLine(50,281,730,281);
g.drawLine(50,282,730,282);
g.setColor(new Color(0,133,255)); //设置画笔为蓝色
g.drawLine(50,420,730,420); // 画下水平轴线
g.drawLine(50,421,730,421);
g.drawLine(50,422,730,422);
g.drawLine(50,423,730,423);
g.drawLine(50,424,730,424);
// 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,50); // 紫字
g.setFont(fnt40); // 设置当前字体
g.setColor(new Color(0,0,255));
g.drawString("Java 语言图形程序设计",190,100);// 蓝字
g.setFont(fnt20); // 设置当前字体
g.setColor(new Color(255,255,0));
g.drawString("程序设计: 谢山水",320,140); // 黄字
g.drawString("2003年10月1日",340,170);
// 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=90;x<710;x++){ //上正弦波
g.drawLine((int)x,(int)f1(x),(int)x+1,(int)f1(x+1));
}
for(int x=90;x<710;x++){ //中正弦波
for (int h=0;h<4;h++){
g.drawLine((int)x,(int)f2(x)+h,(int)x+1,(int)f2(x+1)+h);
}
}
for(int x=90;x<710;x++){ //下正弦波
for (int h=0;h<9;h++){
g.drawLine((int)x,(int)f3(x)+h,(int)x+1,(int)f3(x+1)+h);
}
}
}
}
}