[英]java drawImage doens't work
我正在尝试使用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(...)
方法注定不会做任何有用的事情。
建议:
@Override
注释。 这是有原因的。 paintComponent(...)
方法确实调用了已注释掉的super方法。 getPreferredSize()
这样实际上它足够大,可以在所需位置显示整个图像。 看来您“借用了”代码,实际上遵循了我上面的建议,但是由于某些未知的原因,更改了它以迫使其行为异常,特别是通过扩展Applet。 您能解释一下这背后的原因吗?
public class panel_jogo extends Applet
{
public BufferedImage back;
public panel_jogo()
{
try
{
back = ImageIO.read(new File("src/Recursos/mapa_piso1.png"));
Applet
和File
类不能“很好地配合”。
File
。 File
对象都只能与客户端计算机相关,并且(我认为)在mapa_piso1.png
的硬盘上找不到mapa_piso1.png
。用户的PC! Applet
可以通过URL
从其来源的服务器加载图像。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.