码迷,mamicode.com
首页 > 其他好文 > 详细

earth

时间:2017-11-21 01:06:57      阅读:127      评论:0      收藏:0      [点我收藏+]

标签:awt   action   lis   set   image   位置   label   tar   地球   

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class Earth extends JLabel implements ActionListener {  //标签类JLabel的子类--刻画地球
   JLabel moon;                                                //标签类--刻画(显示)月亮的外观
   Timer timer;                                                //计时器
   double pointX[]=new double[360],                            //double型数组pointX刻画水平坐标-月亮相对于地球的        
          pointY[]=new double[360];                            //double型数组pointY刻画垂直坐标-月亮相对于地球的
   int w=200,h=200,i=0;
   Earth() {
     timer = new Timer(20,this);       //创建timer,振铃间隔是20毫秒当前Earth对象为其监视器    
     setIcon(new ImageIcon("earth.jpg"));                      //设置地球(标签)的图标为earth.jpg
     setHorizontalAlignment(SwingConstants.CENTER);                       //设置地球(标签)对齐方式为居中
     moon=new JLabel(new ImageIcon("moon.jpg"),SwingConstants.CENTER);    //构造月亮(标签)对象
     moon.setSize(60,60);                                                 //设置月亮(标签)大小
     add(moon);                                                           //月亮(标签)放到刻画地球的标签对象里
     pointX[0]=0;                                                         //月亮运动轨道的半径h/2
     pointY[0]=h/2;
     double angle=1*Math.PI/180;                                          //刻度为1度 
     for(int i=0;i<359;i++) {                                             //计算出数组中各个元素的值--圆上的坐标点
       pointX[i+1]=pointX[i]*Math.cos(angle)-pointY[i]*Math.sin(angle);   //以圆中心为(0,0),第一个点为(0,h/2),顺时
       pointY[i+1]=pointY[i]*Math.cos(angle)+pointX[i]*Math.sin(angle);   //针旋转1弧度后的坐标
     }
     for(int i=0;i<360;i++) {           
       pointX[i]=0.8*pointX[i]+w/2;                                       //坐标缩放平移--将圆中心变为(w/2,h/2)    
       pointY[i]=0.8*pointY[i]+h/2;                                       //轨道圆大小缩小1倍
     }
     timer.start();                                                       //计时器启动--每隔100毫秒就会触发ActionEvent
   }
   public void actionPerformed(ActionEvent e) { 
       i=(i+1)%360;                                                       //0~359循环变化
       moon.setLocation((int)pointX[i]-30,(int)pointY[i]-30);             //设置moon对象(标签)在earth对象(标签)上的位置
   }
}

额,不会插入图片,尴尬~~

 

earth

标签:awt   action   lis   set   image   位置   label   tar   地球   

原文地址:http://www.cnblogs.com/s1104119631/p/7868677.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!