无法将图像放入框架

Cannot put image in Frame

我是一名初级程序员,正在尝试使用 Java eclipse 创建 Pacman 游戏。我正处于流程的开始,我只是想在 JFrame 屏幕上显示我的主要 "Princess Pacman" 角色,但是,我弹出了这个覆盖错误。我也尝试过不覆盖但它似乎也不适合我。

这是我的代码:

import java.awt.*;
import java.awt.image.*;
import java.io.File;
import java.io.IOException;
import java.awt.event.KeyEvent;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class Pacman extends JFrame {
    public static final int WIDTH = 500;
    public static final int HEIGHT = 500;

    public static void main(String args[]){
        Pacman gui = new Pacman();
        gui.setVisible(true);
    }

    BufferedImage princess = null;
    public Pacman(){
        super("Princess Pacman");
        //set size of playing space
        setSize(WIDTH,HEIGHT);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        try{
             princess =ImageIO.read(new File("images/Elsa.jpeg"));
        }
        catch (IOException e){
            System.out.println("image not found");
        }

    }

    @Override
    public void draw(Graphics2D g){
        g.drawImage(princess.getScaledInstance(100, 100, Image.SCALE_DEFAULT), 0, 0, this);
    }

}

您正试图覆盖 JFrame class 中不存在的方法。删除覆盖注释。

  • draw 不是 JFrame 或其任何父 class 定义的方法,因此无法覆盖
  • draw 永远不会被任何实际绘制的东西调用
  • 您应该避免直接在顶层容器上绘制,上面已经绘制了很多东西。
  • 您可以使用 JLabel,但这有一些问题。相反,创建一个从 JPanel 扩展的自定义 class 并覆盖其 paintComponent 方法,确保在渲染图像
  • 之前调用 super.paintComponent

仔细看看Painting in AWT and Swing, Performing Custom Painting and this for example