创建Pacman中的Java Graphic2D问题

创建Pacman中的Java Graphic2D问题,java,swing,graphic,pacman,Java,Swing,Graphic,Pacman,现在是夏天,所以我想多教自己一点,所以我开始制作一款吃豆人游戏,但刚开始我就遇到了一个问题 public class PacMan { /** * @param args the command line arguments */ public static void main(String[] args) throws IOException { GameApp runapp = new GameApp(); runapp.run(); } } 类游戏应用程序 p

现在是夏天,所以我想多教自己一点,所以我开始制作一款吃豆人游戏,但刚开始我就遇到了一个问题

public class PacMan {

/**
 * @param args the command line arguments
 */
public static void main(String[] args) throws IOException {

    GameApp runapp = new GameApp();

    runapp.run();
}

}
类游戏应用程序

public class GameApp {  
    public void run() throws IOException {

        GameCanvas game = new GameCanvas();
        PacPlay play = new PacPlay();
        JFrame frame = new JFrame(game.getTitle());
        frame.setSize(game.getWidth(), game.getHeight());
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
        frame.add(play);
    } 
} 
其他类

public class PacPlay extends JPanel implements ActionListener , KeyListener {

    int X , Y = 0 ;
    int KeyCode ;

    BufferedImage PacUP ;
    BufferedImage PacDOWN ;
    BufferedImage PacLEFT ;
    BufferedImage PacRIGHT ;  

    public PacPlay() throws IOException {
        PacRIGHT = ImageIO.read(new File("images\\right.GIF"));
    }

    public void PaintComponent(Graphics2D g) {
        g.drawImage(PacRIGHT , X, Y , null);
    }

    @Override
    public void keyPressed(KeyEvent ke) {
        KeyCode = ke.getKeyCode();
    }
}
我在这里得到的只是一个空框架。哪里出了问题?

在将所有组件添加到框架后,应调用setVisible。而且Java区分大小写,因此

@Override 
public void paintComponent(Graphics g) { // note Graphics instead of Graphics2D 
   super.paintComponent(g);
   g.drawImage(pacRightImage, x, y, this);
}
在做定制绘画时。记住调用super.paintcomponent来绘制背景组件


阅读:

是时候进行一些调试了,首先看看你是否真的得到了一幅图像。从简单开始,只需尝试读取图像,将其放入ImageIcon,然后在JOptionPane中显示图标。编辑:哦,是的,在按照Reimeus的回答添加所有组件后,在JFrame上调用setVisibletrue。别忘了在重写中调用super.paintcomponent方法,并用小写字母KeyCode->KeyCode开始变量我有4个不同的pacman GIF表示4个方向,所以我想制作4个方法,每次在之前的x,y坐标上按下键时都会绘制。他们有更好的方法吗?但仍然得到了空帧,什么是GameCanvas,为什么忽略它?什么是PacPlay?GameCanvas类只有维度,PacPlay类有方法来绘制和移动它,迷宫和碰撞检测算法也将一无所获!在过去的一个小时里尝试了很多事情,仍然在第0点上,你能找出我哪里出错了2个问题:1你在加载图像时出错了吗?2图像是否是动画GIF?没有错误,是的,它是GIF,我也尝试了PNG仍然相同我有4个不同的pacman GIF用于4个方向,所以我在考虑制作4种方法,每次在上一个x,y坐标上按下该键时绘制。他们有更好的方法吗?而且仍然得到空框架,我在GameApp中没有看到任何主要方法。将代码放在匿名Runnable中的run方法中,这样SwingUtilities.InvokeAriters就可以调用它了。InvokeArites位于我没有展示的另一个类中,我现在已经将它包含在问题中了