sinpanel.java
来自「编写一个能绘制动态绘制正弦波和余弦波的程序」· Java 代码 · 共 61 行
JAVA
61 行
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 + =
减小字号Ctrl + -
显示快捷键?