earth
Posted 宋建楠
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了earth相关的知识,希望对你有一定的参考价值。
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的主要内容,如果未能解决你的问题,请参考以下文章