gpt4 book ai didi

java drawImage 不工作

转载 作者:行者123 更新时间:2023-11-30 07:12:49 26 4
gpt4 key购买 nike

我正在尝试使用 Java 面板显示图像,但行不通。该代码没有给出任何异常和/或错误,但图像没有加载。该图像确实存在,我也尝试过 .jpg,但效果不佳。

package feupcraftproject;
import javax.swing.*;

public class frame_jogo extends JFrame
{
public panel_jogo panel;
public frame_jogo()
{
panel = new panel_jogo();
//setLayout(new GridLayout(1,1,0,0));
add(panel);

}
}

package feupcraftproject;
import javax.swing.*;
import java.awt.*;
import java.awt.image.*;
import javax.imageio.ImageIO;
import java.io.*;
import java.applet.Applet;


public class panel_jogo extends Applet
{
public BufferedImage back;
public panel_jogo()
{
try
{
back = ImageIO.read(new File("src/Recursos/mapa_piso1.png"));
}
catch (IOException A)
{
JOptionPane.showMessageDialog(null, A.toString());
}
//this.setBackground(Color.BLACK);
}
//@Override
public void paintComponent(Graphics g)
{
//super.paintComponents(g);
g.drawImage(back, 611, 468, this);

}
}

最佳答案

这个有点莫名其妙:

 public class panel_jogo extends Applet // ?? Applet ??

Applet 是否有 paintComponent(...) 方法?我不这么认为。

编辑——它没有,我看到你评论了@Override——太糟糕了,因为它会告诉你不存在覆盖,所以你的paintComponent(...) 方法注定不会做任何有用的事情。


建议:

  • 改为让您的绘图面板类扩展 JPanel。
  • 不要注释掉您的@Override 注释。这是有必要的。
  • 确保您的 paintComponent(...) 方法确实确实调用了您已注释掉的 super 方法。
  • 请遵循 Java 命名约定,包括让类名以大写字母开头。
  • 另一个可能的问题是,您似乎在向右 611 像素和向下 468 像素绘制图像。考虑让您的绘图程序覆盖 getPreferredSize(),这样它就足够大,可以在所需位置显示整个图像。
  • 或者,或者更好,将图像放入 ImageIcon,将其放入 JLabel,然后显示使用布局管理器将 JLabel 放置在 JPanel 的右下角。

看起来您“借用”了实际上遵循我上面的建议的代码,但出于某种未知原因更改了它以迫使它行为不端,尤其是通过扩展 Applet。你能解释一下你背后的原因吗?

关于java drawImage 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20012530/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com