无法将图像放入框架
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
我是一名初级程序员,正在尝试使用 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