我是一名初学程序员,正在尝试使用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);
}
}
答案 0 :(得分:1)
您尝试覆盖JFrame类中不存在的方法。删除覆盖注释。
答案 1 :(得分:1)
draw
不是由JFrame
或其任何父类定义的方法,因此无法覆盖draw
永远不会被实际绘制的任何内容调用JLabel
,但这有问题。相反,请创建一个从JPanel
延伸的自定义类,并覆盖其paintComponent
方法,确保在渲染图像之前调用super.paintComponent
仔细查看Painting in AWT and Swing,Performing Custom Painting和this for example