単振動
/*
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();
}
}