最近的Java 课程学到了Awt基础界面编程。老师遂出一实验:
3张素材,要求完成一个界面绘制。
- 思路
1、利用抽象类Component,对其paint(Graphics g)方法进行重写,将图片绘制在 Frame窗口上。
2、利用工具包抽象类Toolkit中的静态方法getDefaultToolkit获取工具包(一个java自定义对象),再由此调用getImage(url)方法获得图片
3、使用 图形类Graphics中的 drawImage方法进行图形绘制。
其中:
Graphics.drawImage(img, x, y, width, height, observer);
说明:img是获得的图片,x/y代表再observer中的绝对位置,width/height表示图片的尺寸信息,observer表示图片的载体(理解为Container?)。
- 实现
import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class Practice6_5 {
public static void main(String[] args) {
new MyTankFrame();
}
}
class MyTankFrame extends Frame
{
public MyTankFrame() {
super("坦克大战游戏");
this.setBounds(100,100,560,890);
this.setBackground(Color.white);
myWindowClose();
this.setVisible(true);
this.setResizable(false);
}
public void myWindowClose() {
this.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
@Override
public void paint(Graphics g) {
Image tank1 = Toolkit.getDefaultToolkit().getImage("C:\\Users\\HiWin10\\Desktop\\学习资料教材\\java\\实验6坦克素材\\p1tankD.gif");
Image tank2 = Toolkit.getDefaultToolkit().getImage("C:\\Users\\HiWin10\\Desktop\\学习资料教材\\java\\实验6坦克素材\\p2tankU.gif");
Image steel = Toolkit.getDefaultToolkit().getImage("C:\\Users\\HiWin10\\Desktop\\学习资料教材\\java\\实验6坦克素材\\steels.gif");
// steels
for(int i=0; i<9; i++) {
g.drawImage(steel, i*60+10, 40, 60, 60, this);
}
for(int i=0; i<9; i++) {
g.drawImage(steel, i*60+10, 820, 60, 60, this);
}
for(int i=0; i<12; i++) {
g.drawImage(steel, 10, 60*i+100, 60, 60, this);
}
for(int i=0; i<12; i++) {
g.drawImage(steel, 490, 60*i+100, 60, 60, this);
}
// tank1
g.drawImage(tank1, 70, 350, 60,60,this);
// tank2
g.drawImage(tank2, 190, 410, 60,60,this);
}
}