Java语言程序设计的课程设计项目利用Java实现地球系动画完整实现实例第8部分.docx

上传人:b****2 文档编号:395885 上传时间:2022-10-09 格式:DOCX 页数:21 大小:134.85KB
下载 相关 举报
Java语言程序设计的课程设计项目利用Java实现地球系动画完整实现实例第8部分.docx_第1页
第1页 / 共21页
Java语言程序设计的课程设计项目利用Java实现地球系动画完整实现实例第8部分.docx_第2页
第2页 / 共21页
Java语言程序设计的课程设计项目利用Java实现地球系动画完整实现实例第8部分.docx_第3页
第3页 / 共21页
Java语言程序设计的课程设计项目利用Java实现地球系动画完整实现实例第8部分.docx_第4页
第4页 / 共21页
Java语言程序设计的课程设计项目利用Java实现地球系动画完整实现实例第8部分.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

Java语言程序设计的课程设计项目利用Java实现地球系动画完整实现实例第8部分.docx

《Java语言程序设计的课程设计项目利用Java实现地球系动画完整实现实例第8部分.docx》由会员分享,可在线阅读,更多相关《Java语言程序设计的课程设计项目利用Java实现地球系动画完整实现实例第8部分.docx(21页珍藏版)》请在冰豆网上搜索。

Java语言程序设计的课程设计项目利用Java实现地球系动画完整实现实例第8部分.docx

Java语言程序设计的课程设计项目利用Java实现地球系动画完整实现实例第8部分

利用Java实现地球系动画完整实现实例(第8部分)

在界面中“画图”——拖放地球和月亮

1、需要补充的知识

(1)Java中的事件编程

(2)MouseListener接口中的各个方法所代表的事件

publicvoidmousePressed(MouseEvente);//鼠标按键在组件上单击(按下并释放)时调用。

publicvoidmouseReleased(MouseEvente);//鼠标按钮在组件上释放时调用。

publicvoidmouseClicked(MouseEvente);//鼠标按键在组件上按下时调用。

publicvoidmouseEntered(MouseEvente);//鼠标进入到组件上时调用。

publicvoidmouseExited(MouseEvente);//鼠标离开组件时调用。

特别是mousePressed和mouseReleased方法的编程

2、EarthPlanetApplet程序

importjava.awt.Color;

importjava.awt.Font;

importjava.awt.Graphics;

importjava.awt.Image;

importjava.awt.MediaTracker;

importjava.awt.Rectangle;

importjava.awt.Toolkit;

import.URL;

importjava.awt.event.MouseEvent;

importjava.awt.event.MouseListener;

importjava.awt.event.MouseMotionListener;

importjavax.swing.JApplet;

publicclassEarthPlanetAppletextendsJAppletimplementsRunnable,MouseMotionListener,MouseListener{

privateThreadearthMultiThread=null;

privateThreadmoonMultiThread=null;

privateGraphicsguiGraphics;

privateImageallImagesArray[];

privateintcurrentImageIndex=0;

privateintimageWidth=0;

privateintimageHeight=0;

privatebooleanallImagesLoaded=false;

privatefinalintNUMBER_IMAGES=18;

privatebooleanisRunedByApplication=false;

intcurrentRotatingAngle=0;

intearthCenterX0,earthCenterY0;

intcircleRadius=100;

intcurrentRotatingCount=0;

publicstaticvoidmain(String[]args){

EarthPlanetFrameapplicationJFrame=null;

applicationJFrame=newEarthPlanetFrame("利用Java实现的地球系动画");

EarthPlanetAppletthreadApplet=null;

threadApplet=newEarthPlanetApplet();

applicationJFrame.getContentPane().add("Center",threadApplet);

threadApplet.isRunedByApplication=true;

threadApplet.init();

threadApplet.start();

applicationJFrame.setVisible(true);

}

publicEarthPlanetApplet(){

this.addMouseMotionListener(this);

this.addMouseListener(this);

}

publicvoidstart(){

if(earthMultiThread==null){

earthMultiThread=newThread(this);

earthMultiThread.start();

}

if(moonMultiThread==null){

moonMultiThread=newThread(this);

moonMultiThread.start();

}

}

publicvoidstop(){

if(earthMultiThread!

=null){

earthMultiThread.stop();

earthMultiThread=null;

}

if(moonMultiThread!

=null){

moonMultiThread.stop();

moonMultiThread=null;

}

}

publicvoidloadAllEarthImage(){

guiGraphics=getGraphics();

allImagesArray=newImage[NUMBER_IMAGES];

MediaTrackertracker=newMediaTracker(this);

StringstrImage;

for(intcurrentIndex=1;currentIndex<=NUMBER_IMAGES;

currentIndex++){

strImage="/images/img00"+((currentIndex<10)?

"0":

"")

+currentIndex+".gif";

URLoneImageURL=getClass().getResource(strImage);

if(isRunedByApplication){

allImagesArray[currentIndex-1]=

Toolkit.getDefaultToolkit().getImage(oneImageURL);

}

else{

allImagesArray[currentIndex-1]=getImage(oneImageURL);

}

tracker.addImage(allImagesArray[currentIndex-1],0);

}

try{

tracker.waitForAll();

}catch(InterruptedExceptione){

e.printStackTrace();

}

allImagesLoaded=!

tracker.isErrorAny();

if(!

allImagesLoaded){

stop();

guiGraphics.drawString("图像加载错误,可能是没有找到文件!

",10,40);

return;

}

imageWidth=allImagesArray[0].getWidth(this);

imageHeight=allImagesArray[0].getHeight(this);

earthCenterX0=(getSize().width-imageWidth)/2;

earthCenterY0=(getSize().height-imageHeight)/2;

}//在这里初始化

publicvoidrun(){

if(!

allImagesLoaded){

loadAllEarthImage();

}

repaint();

while(true){

try{

displayImage(guiGraphics);

currentImageIndex++;

if(currentImageIndex==NUMBER_IMAGES)

currentImageIndex=0;

if(Thread.currentThread()==earthMultiThread){

Thread.sleep(50);

}

else{

Thread.sleep(500);

}

}

catch(InterruptedExceptione){

stop();

}

}

}

privatevoiddisplayImage(Graphicsg){

if(!

allImagesLoaded)

return;

//earthCenterX0=(getSize().width-imageWidth)/2;

//earthCenterY0=(getSize().height-imageHeight)/2;

if(Thread.currentThread()==earthMultiThread){

g.drawImage(allImagesArray[currentImageIndex],

earthCenterX0,earthCenterY0,null);

}

else{

g.clearRect((int)(earthCenterX0+circleRadius*Math.cos((currentRotatingAngle-1)*Math.PI/180)),

(int)(earthCenterY0+circleRadius*Math.sin((currentRotatingAngle-1)*Math.PI/180)),

imageWidth,imageHeight);

g.drawImage(allImagesArray[currentImageIndex],

(int)(earthCenterX0+circleRadius*Math.cos(currentRotatingAngle*Math.PI/180)),

(int)(earthCenterY0+circleRadius*Math.sin(currentRotatingAngle*Math.PI/180)),

imageWidth/2,imageHeight/2,

null);//注意调整下面的XY坐标,否则轨迹会被覆盖

g.drawLine((int)(earthCenterX0+(circleRadius-10)*Math.cos(currentRotatingAngle*Math.PI/180)),

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 其它模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1