无法加载要通过键盘移动的图像

时间:2017-10-22 17:52:12

标签: java

我一直在关注一些Java游戏开发教程,我能够创建一个椭圆形的对象,可以随着我的键盘输入移动并创建边界,但是我试图用图像替换椭圆形但是由于某种原因它是没有出现,我很确定我选择的图像不大,它更像是一个小图标,并提前感谢。

package javagame;


import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
 import java.awt.Image;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.ImageIcon;
import javax.swing.JFrame;


public class JavaGame extends JFrame{

int x,y;
private Graphics dbg;
private Image dbImage;
    Font font = new Font("Arial" , Font.BOLD, 30);
    Image face;
public class AL extends KeyAdapter{



    public void keyPressed(KeyEvent e){

        int KeyCode = e.getKeyCode();

        if(KeyCode == e.VK_LEFT) {
              if(x<=0)
            x=0;
            else
            x -=15;
        }


         if(KeyCode == e.VK_DOWN) {
            if(y>=480)
                y=480;
            else
             y+=5;

        }
          if(KeyCode == e.VK_UP) {
             if(y<=20) 
                y=20;
             else
              y-=5;

          }

           if(KeyCode == e.VK_RIGHT) {
          if(x>=480)
               x=480;
          else
               x+=5;
        }

}

      public void keyReleased(KeyEvent e){

}
}

public JavaGame() {
    //game images
    ImageIcon i = new ImageIcon("C:/Users/Sheref/Documents/NetBeansProjects/avaGame/src/javagame/type-of-solder-001-512.gif");
    face = i.getImage();
    //game properties
    addKeyListener(new AL());
    setTitle(" Strategy Game");
    setSize(500,500);
    setResizable(true);
    setVisible(true);
    setBackground(Color.CYAN);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        x = 20 ;
        y = 30;

}

    public void paint(Graphics g){
        dbImage = createImage(getWidth() , getHeight());
        dbg = dbImage.getGraphics();
        paintComponent(dbg);
        g.drawImage(dbImage , 0 , 0 , this);
    }

public void paintComponent(Graphics g)
{
    g.setFont(font);
    g.drawImage(face, x, y, this);
    repaint();


}

public static void main(String[] args) {

    new JavaGame();

}

}

1 个答案:

答案 0 :(得分:0)

paint方法中,而不是

this.dbImage = this.createImage(this.getWidth(), this.getHeight());

放:

this.dbImage = this.createImage((int) this.getSize().getWidth(), (int) this.getSize().getHeight());