java中画图

import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;


public class TankClient extends Frame{
 public final int FRAME_HEIGHT = 600;
 public final int FRAME_WIDTH = 700;
    public final int TANK_SIZE = 30; 
   
    private static Toolkit tk = Toolkit.getDefaultToolkit();
   
    Image image = tk.getImage(TankClient.class.getClassLoader().getResource("Image/tankU.gif"));

   
    Image offScreenImage = null;
 
 public int x=20,y=40;
 
 
    public static void main(String[] args) {
       new TankClient().lauchFrame();
    }
  
    public void lauchFrame(){
    setBounds(300, 100, FRAME_WIDTH, FRAME_HEIGHT);
    setBackground(Color.black);
    setResizable(false);
    addWindowListener(new WindowAdapter(){
    @Override
   public void windowClosing(WindowEvent e) {
             System.exit(0);
   }
     });
    setVisible(true);
    addKeyListener(new KeyMonitor());
   
    new Thread(new PaintThread()).start();
   }

  @Override
     public void paint(Graphics g) {
  //启动Frame的时候会自动调用该paint()方法
   g.drawImage(image, x, y, null);
  }
 
 
 
  @Override
 public void update(Graphics g) {
  if (offScreenImage == null) {
   offScreenImage = this.createImage(FRAME_WIDTH, FRAME_HEIGHT);
  }
  Graphics gOffScreen = offScreenImage.getGraphics();
  Color c=gOffScreen.getColor();
        gOffScreen.setColor(Color.black);
        gOffScreen.fillRect(0, 0, FRAME_WIDTH,FRAME_HEIGHT);
        gOffScreen.setColor(c);
  paint(gOffScreen);
  g.drawImage(offScreenImage,0,0,null);
 }

 private class PaintThread implements Runnable {
  public void run() {
            do {
    repaint();
    try {
     Thread.sleep(100);
    } catch (InterruptedException e) {
     e.printStackTrace();
    }
   } while (true);
  }
  }
 
 private class KeyMonitor extends KeyAdapter{

  @Override
  public void keyPressed(KeyEvent e) {
            int key = e.getKeyCode();
            switch(key){
            case KeyEvent.VK_W:
             image = tk.getImage(TankClient.class.getClassLoader().getResource("Image/tankU.gif"));
             y-=5;
             if(y<=15){
              y=15;
             }
             break;
            case KeyEvent.VK_S:
             y+=5;
             if(y >= 555){
              y=555;
             }
             image = tk.getImage(TankClient.class.getClassLoader().getResource("Image/tankD.gif"));
             break;
            case KeyEvent.VK_A:
             x-=5;
             if(x<=-5){
              x=-5;
             }
             image = tk.getImage(TankClient.class.getClassLoader().getResource("Image/tankL.gif"));
             break;
            case KeyEvent.VK_D:
             x+=5;
             if(x>=655){
              x=655;
             }
             image = tk.getImage(TankClient.class.getClassLoader().getResource("Image/tankR.gif"));
             break;
            }
  }
  
 }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值