当前位置:文档之家› JAVA暑期实习报告

JAVA暑期实习报告

实习总结报告实习总结报告一、实习目的Java语言是一种高级计算机语言,具有简单,面向对象,安全,跨平台,支持多线程的特点。

这次实习的目的是使我们掌握JA V A的基本知识,能运用JA V A来编写程序,解决一般性的问题,使得我们在完成本课程学习后,掌握JA V A的基本知识和初步的编程能力,为以后的学习和工作提供了一个非常有用的工具。

2、实习内容1.鼠标拖动小球运动…MouseMotionListener{//Graphics代表画笔super.paint(g);//调用父类的paint方法//设置画笔颜色g.setColor(Color.BLUE);/*x,y代表要填充的圆弧的左上角坐标代表填充圆弧的宽度代表填充圆弧的高度相对于开始角度,圆弧的跨越度*/}@Overridex=e.getX();//获得圆心坐标y=e.getY();repaint();//重新画一个小球}@Overridex=e.getX();//获得圆心坐标y=e.getY();repaint();//重新画一个小球}x=200;y=200;//为小球坐标赋初始值//为当前面板添加鼠标移动事件监听this.addMouseMotionListener(this); }public class MouseBallFrame extends JFrame{public static void main(String[]args){MouseBallFrame frame=new MouseBallFrame();MouseBallPanel panel=new MouseBallPanel();frame.add(panel);frame.setSize(1024,768);frame.setTitle("鼠标控制小球");frame.setVisible(true);}}这是第一次成功的设置窗口,面板,并将JA V A程序结果在窗口内显示,这似乎打开了另外一扇门,有更多的知识等着我去探索。

(结果如图1)图12.小球运动的屏幕保护程序部分程序节选://定义小球运动方法switch(direction){y--;y++;if(x<=0){this.setDirection(RIGHT_DOWN);}if(y>=panel.getHeight()-3*r){this.setDirection(LEFT_UP);}break;y--;if(x>=panel.getWidth()-3*r){this.setDirection(LEFT_UP);}if(y<=0){this.setDirection(RIGHT_DOWN); }break;y++;if(x>=panel.getWidth()-3*r){this.setDirection(LEFT_DOWN);}if(y>=panel.getHeight()-3*r){this.setDirection(RIGHT_UP);}break;}}定义小球运动方法,不仅需要随机生成小球的初始坐标,还要实现小球的运动方向,以及碰到四周边框是反弹。

这些都是通过小球坐标和运动方向在规定范围内发生特定改变来实现的。

在这个程序中,我第一次学习定义运动方向,并改变坐标。

(如图2)图23.雪花下落动画部分程序节选:import java.awt.Font;…public class SnowPanel extends JPanel{private Font[]fonts;…public SnowPanel(){fonts=new Font[4];fonts[3]=new Font("宋体",Font.BOLD,14);…Random r=new Random();…public void paint(Graphics g){super.paint(g);//设置背景颜色this.setBackground(Color.BLACK);//设置画笔颜色g.setColor(Color.WHITE);//设置画笔字体g.setFont(fonts[3]);for(int i=0;i<xx.length;i++){g.drawString("¥100",xx[i],yy[i]); }}public void startRun(){new Thread(){public void run(){…}try{Thread.sleep(50);}catch(InterruptedException e){e.printStackTrace();}repaint();}}}.start();}}因为利用“*”来代替雪花,输出字符较小,因此需要利用程序语句“fonts[3] =new Font("宋体",Font.BOLD,14);”来使输出得字符增大。

为了使画面看着更自然,所有雪花的初始坐标要在面板大小范围内随机生成,这一过程利用关键字“Random”实现,同时用线程休眠“Thread.sleep”来控制雪花下落速度。

(结果如图3)图34.键盘字母打字练习这个程序与雪花下落的程序有些类似,把下落的“*”替换成26个英文字母,在加入键盘监听器,使键盘可以控制程序结果。

部分程序节选:import java.awt.event.KeyEvent;import java.awt.event.KeyListener;…public class CharGamePanel extends JPanel implements Runnable,KeyListener{…public CharGamePanel(){for(int i=0;i<c.length;i++){…c[i]=(char)(Math.random()*26+97);}}…@Overridepublic void keyPressed(KeyEvent e){…}在主函数中加入键盘监听器:frame.addKeyListener(panel);panel.addKeyListener(panel);虽然本程序与雪花下落的程序类似,但是编写过程中还是有一些不同之处,雪花下落的字符是相同的,而键盘游戏中下落的字母是在26个英文字母中随机产生的,利用随机函数“Math.random”,还要注意26个字母的ASCII值与随机数相加的逻辑关系。

(结果如图4)图45.月食动画import java.awt.Graphics;…public class MoonEclipsePanel extends JPanel{…x=510;//黑月亮的初始坐标y=170;…}g.fillArc(560,120,60,60,0,360);//白色月亮g.setColor(Color.BLACK);g.fillArc(x,y,60,60,0,360);//黑月亮}我认为这个程序的难度在于确定两个月亮的坐标,尤其是黑月亮的坐标,既要保证黑月亮在开始月食之前不被看到,又要保证在运动过程中能与白月亮重合,实现月食的全过程。

(结果如图5,图6)图5图66.JA V A迷你电子钟import java.awt.Color;…public class ClockFrame extends JFrame{…public ClockFrame(){this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setBounds(100,100,400,130);//设置窗口边框this.setTitle("JA V A迷你电子时钟");…panel.setBounds(7,10,380,70);…Thread.sleep(1000);…Thread colorTh=new Thread(color);…label.setBounds(80,10,380,60);…JLabel txt=new JLabel("信计13版权所有@盗版必究");txt.setBounds(220,80,210,20);我们在编写这个程序时出现了两个问题,第一个是时间不发生改变,原因是控制时间的线程没有成功启动,增加缺失的代码,重新启动线程即可;第二个是结果显示的电子钟布局与预先设想的不同,控制各个边框及各个标识的坐标经过几次修改调整后完成。

(结果如图7)图77.运动的小乌龟import java.awt.Graphics;…public class TurtlePanel extends JPanel implements MouseListener ,MouseMotionListener,KeyListener{…public void paint(Graphics g){super.paint(g);if(status==1){//乌龟的初始状态//龟尾巴g.setColor(new Color(85,140,95));g.fillOval(160+x,195+y,150,150);g.setColor(Color.LIGHT_GRAY);g.fillOval(180+x,190+y,140,160);//龟头g.setColor(new Color(85,140,95));g.fillOval(145+x,50+y,55,75);//腿g.fillOval(75+x,110+y,50,60);g.fillOval(223+x,110+y,50,60);g.fillOval(75+x,220+y,50,60);g.fillOval(223+x,220+y,50,60);//龟眼g.setColor(Color.WHITE);g.fillOval(153+x,55+y,13,13);g.fillOval(178+x,55+y,13,13);g.setColor(Color.BLACK);g.fillOval(153+x,55+y,10,10);g.fillOval(178+x,55+y,10,10);//龟身g.setColor(new Color(80,110,80));g.fillOval(100+x,100+y,150,190); g.setColor(new Color(120,180,135));g.fillOval(107+x,107+y,135,175);g.setColor(Color.BLACK);//龟纹g.setColor(Color.BLACK);g.drawLine(148+x,160+y,201+x,160+y);g.drawLine(148+x,225+y,201+x,225+y);g.drawLine(133+x,193+y,148+x,160+y);g.drawLine(200+x,160+y,216+x,193+y);g.drawLine(133+x,193+y,148+x,225+y);g.drawLine(201+x,225+y,216+x,193+y);g.drawLine(124+x,253+y,148+x,225+y);g.drawLine(222+x,255+y,201+x,225+y);g.drawLine(133+x,193+y,108+x,209+y);g.drawLine(240+x,209+y,216+x,193+y);g.drawLine(126+x,135+y,148+x,160+y);g.drawLine(201+x,160+y,224+x,135+y);}…if(status==8){//乌龟左(右)爬状态}}…在编写这个程序中,我的难点在于绘画几个不同状态的小乌龟,小乌龟各个身体器官及背部的龟纹各自有属于自己的坐标和不同的运动方式。

相关主题