无法将图像放入Frame中

时间:2015-04-06 06:03:45

标签: java image swing jframe override

我是一名初学程序员,正在尝试使用Java eclipse创建一个Pacman游戏。我正处于这个过程的开始阶段,我只是想在"Princess Pacman"屏幕上找到我的主JFrame字符,但是,我突然出现了这个覆盖错误。我也尝试过覆盖,但它似乎也不适合我。

这是我的代码:

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);
    }

}

2 个答案:

答案 0 :(得分:1)

您尝试覆盖JFrame类中不存在的方法。删除覆盖注释。

答案 1 :(得分:1)

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

仔细查看Painting in AWT and SwingPerforming Custom Paintingthis for example