<span style="font-size:18px;">import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
/**
* 类台球运动
* @author Lixiangjian
*
*/
public class BallGame extends Frame{
//Image sun 代表所得到的图片路径
Image sun =Toolkit.getDefaultToolkit().getImage("images/qiu.jpg");//这种方法写法不好,但最简单
//定义x、y轴
double x=100;
double y=100;
double degree =3.14/3;
/**
* paint画窗口时会自动被调用(non-Javadoc)
* Graphics g 相当于一支笔
* g.drawImage 画图像 : 画sun图像,相对于窗口位置x=100,y=100,null始终为null就行了
*/
public void paint(Graphics g){
System.out.println("画一次");
//当x、y轴定义为double类的时候由于g.drawImage里边的参数必须为整数,所以这里我们的强制转换成int类型
g.drawImage(sun, (int)x, (int)y, null);
x=x+10*Math.cos(degree);
y = y+10*Math.sin(degree);
if(y>300-30){
degree = -degree;
}
if(x>500-30){
degree =3.14-degree;
}
if(x<0){
degree= 3.14-degree;
}
if(y<30){
degree=-degree;
}
}
void launchFrame(){
//设置窗口大小
setSize(500,300);
//setLocation()是JFrame里面的方法,设置控件在窗体里初始化的位置
setLocation(150, 150);
//设置窗口背景颜色
// setBackground(Color.blue);
//设置窗口标题
setTitle("李某某");
//设置是否显示
setVisible(true);
//调用
new PaintThread().start();
}
public static void main(String[] agrs){
System.out.println("李某某Java练习");
//在主函数中创建类并调用启动窗口
new BallGame().launchFrame();
}
class PaintThread extends Thread{
public void run(){
while(true){
repaint();//重画窗口
//40毫秒
try {
//设置休眠时间
Thread.sleep(40);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
</span>