Applet程序,画一个正弦曲线并用JSlider控制它的振幅

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

class SineDraw extends JPanel
{
private static final int SCALEFACTOR=200;
private int cycles;
private int points;
private double sines[];
private int pts[];
public SineDraw(){setCycles(5);}
public void setCycles(int newCycles)
{
cycles=newCycles;
points=SCALEFACTOR*cycles*2;
sines=new double[points];
for(int i=0;i <points;i++)
{
double radians=(Math.PI/SCALEFACTOR)*i;
sines[i]=Math.sin(radians);
}
repaint();
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
int maxWidth=getWidth();
double hstep=(double)maxWidth/(double)points;
int maxHeight=getHeight();
pts=new int[points];
for(int i=0;i <points;i++)
pts[i]=(int)(sines[i]+maxHeight/2*0.95+maxHeight/2);
g.setColor(Color.RED);
for(int i=1;i <points;i++)
{
int x1=(int)((i-1)*hstep);
int x2=(int)(i*hstep);
int y1=pts[i-1];
int y2=pts[i];
g.drawLine(x1,y1,x2,y2);
}
}
}
public class SineWave extends JApplet
{
private SineDraw sines=new SineDraw();
private JSlider adjustCycles=new JSlider(1,30,5);
public void init()
{
Container cp=getContentPane();
cp.add(sines);
adjustCycles.addChangeListener(new ChangeListener()
{
public void stateChanged(ChangeEvent e)
{
sines.setCycles(((JSlider)e.getSource()).getValue());
}
});
cp.add(BorderLayout.SOUTH,adjustCycles);
}
public static void main(String args[])
{
new SineWave();
}
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值