単振動

/*
    A basic extension of the java.applet.Applet class
*/

import java.awt.*;
import java.applet.*;

public class Applet1 extends Applet implements Runnable
{
Image db,imgs;
    Graphics img,g;
    Thread th = null;
   
    double t=100,y;
    int A=50,y1,T=2,r=20;//rは偶数であること
   
    public void init()
    {
    setBackground(java.awt.Color.lightGray);
    db = createImage(4*r, 8*r);
        img = db.getGraphics();
        imgs=getImage(getDocumentBase(),"image.gif");     
       
        // Take out this line if you don't use 
symantec.itools.net.RelativeURL or symantec.itools.awt.util.StatusScroller
        symantec.itools.lang.Context.setApplet(this);
   
        // This code is automatically generated by Visual Cafe when you add
        // components to the visual environment. It instantiates and initializes
        // the components. To modify the code, only use code syntax that matches
        // what Visual Cafe can generate, or Visual Cafe may be unable to back
        // parse your Java file into its visual environment.
        //{{INIT_CONTROLS
        setLayout(null);
        setBackground(java.awt.Color.lightGray);
        setSize(700,400);
        label2.setText("振幅 A");
        add(label2);
        label2.setForeground(java.awt.Color.blue);
        label2.setBounds(408,48,73,27);
        choice1.addItem("4");
        choice1.addItem("8");
        choice1.addItem("16");
        choice1.addItem("32");
        choice1.addItem("64");
        choice1.addItem("128");
       
        try {
            choice1.select(4);
        }
        catch (IllegalArgumentException e) { }
        add(choice1);
        choice1.setBounds(480,48,72,25);
        label3.setText("周期 T");
        add(label3);
        label3.setForeground(java.awt.Color.blue);
        label3.setBounds(408,84,60,33);
        choice2.addItem("1");
        choice2.addItem("2");
        choice2.addItem("3");
        choice2.addItem("4");
        choice2.addItem("5");
        choice2.addItem("6");
        choice2.addItem("7");
        choice2.addItem("8");
        choice2.addItem("9");
        choice2.addItem("10");
        try {
            choice2.select(1);
        }
        catch (IllegalArgumentException e) { }
        add(choice2);
        choice2.setBounds(480,84,74,25);
        //}}
   
        //{{REGISTER_LISTENERS
        SymMouse aSymMouse = new SymMouse();
        this.addMouseListener(aSymMouse);
       
        SymAction lSymAction = new SymAction();
        SymItem lSymItem = new SymItem();
        choice1.addItemListener(lSymItem);
        choice2.addItemListener(lSymItem);
        //}}
    }
    public void start() {
        if (th == null) {
            th = new Thread(this);
            th.start();
        }
    }

    //アニメーションさせるスレッド
    public void run() {
   
        while (true) {
            t=t+0.01;
            repaint();
           
            try {
                Thread.sleep(5);
            } catch (InterruptedException e) {}
        }   
    }

    //アプレットの画面の描画を行うメソッド
    public void paint(Graphics g) {
        update(g);
    }

    public void update(Graphics g) {
    //doubleBufferに対して描画を行う
   
    g.drawImage(imgs, 400, 200, this);
   
    y=A*Math.sin(2*Math.PI/T*t);
   
    y1=(int)(-y);
    img.setColor(Color.black);
    img.fillOval(r,3*r,2*r,2*r);
    img.drawLine(2*r, 0,2*r, 3*r);
   
    //画面へと転送する
   
        g.drawImage(db, 200, y1+150, this);
        g.drawLine(200+2*r, 0, 200+2*r, y1+150);
   
    }

    public void stop() {
        if (th != null) {
            th.stop();
            th = null;
        }
    }

    //{{DECLARE_CONTROLS
    java.awt.Label label2 = new java.awt.Label();
    java.awt.Choice choice1 = new java.awt.Choice();
    java.awt.Label label3 = new java.awt.Label();
    java.awt.Choice choice2 = new java.awt.Choice();
    java.awt.Canvas canvas1 = new java.awt.Canvas();
    //}}
   
    class SymMouse extends java.awt.event.MouseAdapter
    {
       
        public void mouseClicked(java.awt.event.MouseEvent event)
        {
            Object object = event.getSource();
            if (object == Applet1.this)
                Applet1_MouseClicked(event);
           
        }
    }

    void Applet1_MouseClicked(java.awt.event.MouseEvent event)
    {
        // to do: code goes here.
       
    }

    class SymAction implements java.awt.event.ActionListener
    {
        public void actionPerformed(java.awt.event.ActionEvent event)
        {
        }
    }

    class SymItem implements java.awt.event.ItemListener
    {
        public void itemStateChanged(java.awt.event.ItemEvent event)
        {
            Object object = event.getSource();
            if (object == choice1)
                choice1_ItemStateChanged(event);
            else if (object == choice2)
                choice2_ItemStateChanged(event);
        }
    }

    void choice1_ItemStateChanged(java.awt.event.ItemEvent event)
    {
        // to do: code goes here.
        A=Integer.parseInt(choice1.getSelectedItem());
       
        th.suspend();
        g=getGraphics();
        g.setColor(Color.lightGray);
        g.fillRect(0,0,700,400);
        th.resume();
           
    }

    void choice2_ItemStateChanged(java.awt.event.ItemEvent event)
    {
        // to do: code goes here.
       
        T=Integer.parseInt(choice2.getSelectedItem());
        th.suspend();
        g=getGraphics();
        g.setColor(Color.lightGray);
        g.fillRect(0,0,700,400);
        th.resume();
           
    }
}

BACK >>