让当前的程序执行停留一段时间的方法
让当前的程序执行停留一段时间的方法如下:
Thread.sleep(以毫秒为单位的休眠时间)
对于调用Thread类中sleep()方法的这个语句,Eclipse可能会给出编译错误提醒,对此Eclipse给出了两种解决方法,如图1.6.5所示。
图1.6.5 解决方法
Thread类中的sleep()方法在某种可能的情况下是会抛出异常的。Java的语法规定,对于当前调用的方法,如果该方法定义了在某种情况下会抛出异常对象,则方法的调用者必须处理这个异常,否则,编译不通过(某些异常在没有处理的情况下,编译也可以通过,这里先忽略)。这里我们一般采用Eclipse给出的第二种方法来处理这个异常,用try-catch包围抛出异常的语句,这样编译就可以通过了。
这句的语义是,如果写在try语句块中的某一语句抛出了异常,那么try语句块中余下的语句就不再执行,被抛出的异常对象会抛给catch子句去捕获,如果catch后面小括号中声明的捕获对象类型可以捕获当前的异常对象,那么就转去执行catch后面大括号中的异常处理模块。Java异常处理语句的基本流程如图1.6.6所示。
图1.6.6 Java异常处理语句的基本流程
异常的抛出和捕获是Java处理非正常情况的机制,第7章会介绍。
需求:在一个300×400的窗口中显示一个直径为20的小球,小球自动向下移动,当走出窗口下边缘的时候再从窗口上面重新出现,然后再自动下行。
分析:
根据底层的应用编程接口,paint()函数中写入的语句是面板类的一次描绘,即我们看到的面板类中的内容是调用一次paint()函数之后的描绘效果。而动画效果是需要循环地调用paint()进行描绘和呈现的,这里动画的循环语句没有写在paint()函数中,我们在面板类中单独写了一个go()函数来实现动画的循环,参考代码如下。
代码6.3-1
代码6.3-2
代码6.3-3
【代码6.3】“下落的小球”的参考代码
注意:在面板类中,面板的宽度和高度不要用常量(如300、400等),而应该用this.getWidth()和this.get Height()来取得。因为运行的时候,窗口是随时可以因为拉动而改变大小的,如果窗口的宽度和高度用了常量的话,就不能反映窗口的变化,那么,相关的执行效果就会出现错误。
拓展:请修改以上的程序,让小球碰到窗口下边缘的时候,改为向上移动,然后碰到窗口上边缘的时候,改为向下移动……