用java做的滚动的正弦曲线

2008-02-23 09:25:05来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

//Windows API写过滚动正弦曲线,感觉用Java做起来代码会比较小,试了一下,但感觉界面不如windows好.

import java.awt.*;
import java.awt.event.*;
import javax.Swing.*;
import javax.swing.Timer;


public class SinWave extends JFrame{
private static final int NUM = 1000;
private static final double TWOPI = 2 * 3.14;
private static final int STEP = 10;
private int []xPoints = new int[NUM];
private int []yPoints = new int[NUM];
private int []yCopyPoints = new int[STEP];
private int width,height;
private Timer timer;

public SinWave()
{
setSize(500,400);
this.setBackground(Color.white);
Dimension scrSize=Toolkit.getDefaultToolkit().getScreenSize();
width = getWidth();
height = getHeight();
this.setLocation((scrSize.width-width)/2,(scrSize.height-height)/2);
for(int i = 0; i < NUM; i )
{
xPoints[i] = i * width / NUM;
yPoints[i] = (int)(height/2*(1-Math.sin(TWOPI * i / NUM)));
}
setVisible(true);
timer = new Timer(200,new ActionListener(){
public void actionPerformed(ActionEvent e)
{
for(int i = 0; i < STEP; i )
yCopyPoints[i] = yPoints[i];
for(int i = 0; i < NUM-STEP; i )
yPoints[i] = yPoints[i STEP];
for(int i = 0; i < STEP; i )
yPoints[i NUM-STEP] = yCopyPoints[i];
repaint();
}
});

addComponentListener(new ComponentAdapter() {
public void componentResized(ComponentEvent ce) {
width = getWidth();
height = getHeight();
for(int i = 0; i < NUM; i )
{
xPoints[i] = i * width / NUM;
yPoints[i] = (int)(height/2*(1-Math.sin(TWOPI * i / NUM)));
}
}
});
timer.start();
}
public void paint(Graphics g)
{
super.paint(g);
g.setColor(Color.red);
g.drawLine(0,height/2,width,height/2);
g.setColor(Color.green);
g.drawPolyline(xPoints,yPoints,NUM);
}
public static void main(String []args)
{
SinWave sw= new SinWave();
sw.setDefaultCloseOperation(EXIT_ON_CLOSE);
}
}

上一篇: 电信网管中的Java客户端(三)
下一篇: 电信网管中的Java客户端系列(四)

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:产生不重复随机数,写得不好,希望大家多多批评!!!

下一篇:电信网管中的Java客户端(三)