⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sinpanel.java

📁 编写一个能绘制动态绘制正弦波和余弦波的程序
💻 JAVA
字号:
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;

import javax.swing.JPanel;

public class SinPanel extends JPanel implements Runnable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 4648858808935989030L;
	private double a;
	private double b;
	private double c;

	public SinPanel() {
		a = 50.0;
		b = 50.0;
		c = 0.0;
	}

	@Override
	public void run() {
		// TODO Auto-generated method stub
		a = getSize().width/30;
		b = getSize().height/4;
		while (true) {
			repaint();
			if ((c += .1) > 2 * Math.PI * a)
				c = 0;
			try {
				Thread.sleep(100);
			} catch (InterruptedException ex) {
				ex.printStackTrace();
			}
		}
	}

	@Override
	public void paint(Graphics g) {
		update(g);
	}

	@Override
	public void update(Graphics g) {
		Dimension d = getSize();
		g.clearRect(0, 0, d.width, d.height);
		g.setColor(Color.black);
		g.drawRect(0, 0, d.width-1, d.height-1);
		g.drawString("正弦波", d.width/2-20, 50);
		for (int x = 0; x < d.width; x++) {
			g.drawLine(x, (int) (f(x, c)), x + 1, (int) (f(x + 1, c)));
		}
	}

	private double f(double x, double c) {
		return (Math.sin(x / a + c) * b + getSize().height / 2);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -