第一步产生窗口
awt和Swing是JAVA中常见的图形界面技术
创建一个类继承JFrame类,初始化launch方法,使用设置标题,大小,位置等方法
setVisable方法使得窗口可见
package cn.dfgx.game;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JFrame;
public class MyGameFrame extends JFrame {
/*
* 初始化窗口
*/
public void launchFrame(){
this.setTitle("东方国信,程序猿作品");
this.setVisible(true);
this.setSize(500, 500);
this.setLocation(300, 300);
this.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
// TODO Auto-generated method stub
System.exit(0);
}//匿名内部类为了关闭窗口时也关闭程序
});
}
public static void main(String[] args) {
MyGameFrame f = new MyGameFrame();
f.launchFrame();
}
}
第二步(1).将图片加载的方法封装到GameUtil中可以复用
package cn.dfgx.game;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.URL;
import javax.imageio.ImageIO;
public class GameUtil {
private GameUtil() {
}
/**
* 返回指定路径文件的图片对象
* @param Path
* @return
*/
public static Image getImage(String Path){
BufferedImage bi = null;
try {
URL u = GameUtil.class.getClassLoader().getResource(Path);//可以帮助我们获得程序运行类加载器,加载资源的根目录,从而获得相对资源位置。
bi = ImageIO.read(u);//帮助我们读取图片信息
} catch (IOException e) {
e.printStackTrace();
}
return bi;
}
}
(2).Graphics画笔对象画图形。重写paint方法。
第三步实现动画效果
重画窗口线程PaintThread类继承Thread,为了方便使用MyGameFrame类的属性和方法,我们将PaintThread定义成内部类。
public class MyGameFrame extends Frame {
//其他代码和上个版本一致,限于篇幅,此处只呈现新增的代码
/**
* 定义一个重画窗口的线程类,是一个内部类
* @author
*
*/
class PaintThread extends Thread {
public void run(){
while(true){
repaint();
try {
Thread.sleep(40); //1s = 1000ms
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
启动线程
public void launchFrame(){
//本方法其他代码和上个版本一致,限于篇幅,只显示新增的代码
new PaintThread().start(); //启动重画线程
}