import java.awt.Color; import java.awt.Graphics; import java.awt.Rectangle; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JFrame; import javax.swing.Timer; public class UMotion extends JFrame { /* field */ private Timer doAct; //Oval private double x_p,y_p;//coordinate private int o_wid=30,o_hei=30;//size //para private double velocity; private double time; //direction private int d=1; public UMotion(double s_velocity,double s_time) { //スーパークラスのコンストラクタ super("Uniform motion"); //終了のオプション setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //Frameの大きさ setSize(600, 200); //Computerの画面の大きさ Rectangle screen = getGraphicsConfiguration().getBounds(); //画面の位置 setLocation(screen.x + screen.width / 2 - getSize().width / 2, screen.y + screen.height / 2 - getSize().height / 2); //10は10/1000秒間毎に実行と言う意味 doAct=new Timer(10, new ActionListener() { public void actionPerformed(ActionEvent e) { //端っこに行ったら向きを変える //switch if((d==1&&x_p>getWidth()-o_wid)) d=-1; else if((d==-1&&x_p<0)) d=1; //移動距離を足していくと移動したことになる x_p+=d*velocity*time; repaint(); } }); //coordinate x_p=0; y_p=120; this.time=s_time; this.velocity=s_velocity; } //表示 public void paint(Graphics g ){ super.paint(g); g.setColor(Color.RED); //円,->x座標,y座標,横幅,縦幅 g.fillOval((int)x_p, (int)y_p-80,o_wid, o_hei); //円,->x座標,y座標,横幅,縦幅 g.fillOval((int)x_p, (int)y_p-40,o_wid, o_hei); g.setColor(Color.BLUE); //円,->x座標,y座標,横幅,縦幅 g.fillOval((int)x_p, (int)y_p,o_wid, o_hei); //タイマーが動いているかの確認 if(!doAct.isRunning()) doAct.start();//タイマーを動作させる } public static void main(String[] args) { new UMotion(10,0.05).setVisible(true);//JFrameの表示 } }
2012年11月10日土曜日
Javaで等速運動 Demo
初めてJAVAでGUIを組むときのサンプル
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿