求源程序,实在不会啊

解决方案 »

  1.   


    import java.awt.BorderLayout;
    import java.awt.Canvas;
    import java.awt.EventQueue;
    import java.awt.Graphics;import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.border.EmptyBorder;/**
     * 绘制一条移动的正弦曲线
     * @author zys59三仙半(QQ:597882752)<br>
     *         创建时间:2015年9月18日 下午5:05:49
     */
    public class DrawSinFrame extends JFrame {
    private static final long serialVersionUID = 5963639555566134678L; private JPanel contentPane; /**
     * Launch the application.
     */
    public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
    public void run() {
    try {
    DrawSinFrame frame = new DrawSinFrame();
    frame.setVisible(true);
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    });
    } /**
     * Create the frame.
     */
    public DrawSinFrame() {
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setBounds(100, 100, 500, 300);
    contentPane = new JPanel();
    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    contentPane.setLayout(new BorderLayout(0, 0));
    setContentPane(contentPane);
    MySinCanvas canvas = new MySinCanvas();
    add(canvas);
    }}class MySinCanvas extends Canvas implements Runnable {
    private static final long serialVersionUID = -2108382100904246362L;
    //相位
    private int angle = 0;
    //移动速度和方向,正值左移,负值右移
    private int v = -5; public MySinCanvas() {
    setSize(420, 120);
    new Thread(this).start();;
    } @Override
    public void paint(Graphics g) {
    super.paint(g);
    for (int i = 0; i < 420; i++) {
    g.drawLine(i, (int) (120 - 120 * Math.sin((angle + i) * Math.PI
    / 180)), i + 1, (int) (120 - 120 * Math.sin((angle + i + 1)
    * Math.PI / 180)));
    }
    } @Override
    public void run() {
    while (true) {
    angle += v;
    repaint();
    try {
    Thread.sleep(1000);
    } catch (InterruptedException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    }
    }