所以我用Java制作自己的游戏,是的,这是一件奇怪的事情。问题是我做了一个方法来返回一个加载了图像的BufferedImage:
public static BufferedImage getImage(String img) {
try {
image = ImageIO.read(Game.class.getResourceAsStream("./img/" + img));
} catch (IOException e) {
e.printStackTrace();
}
image.flush();
return image;
}
此方法正在为我的图标返回图像,没有任何问题。
frame.setIconImage(Game.getImage("icon.png"));
问题是当我在画布上绘制图像时:
g.drawImage(Game.getImage("aa.png"), 0, 0,Game.WIDTH, Game.HEIGHT,null);
有人能帮助我吗?
我应该说它适用于Windows但不适用于GNU / Linux
答案 0 :(得分:0)
拍摄你的照片,放在这个类下面的子目录/包中(在img
包中)对我来说很合适
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Test {
public static void main(String[] args) {
new Test();
}
public Test() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
JFrame frame = new JFrame();
frame.add(new MenuPane());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
public static class Game {
public static BufferedImage getImage(String named) throws IOException {
return ImageIO.read(Game.class.getResource("img/" + named));
}
}
public class MenuPane extends JPanel {
private BufferedImage background;
public MenuPane() {
try {
background = Game.getImage("aa.jpg");
} catch (IOException ex) {
ex.printStackTrace();
}
}
@Override
public Dimension getPreferredSize() {
return background == null ? new Dimension(200, 200) : new Dimension(background.getWidth(), background.getHeight());
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(background, 0, 0, this);
}
}
}
我注意到了什么?我下载时aa
是jpg
,但在您的代码中被命名为png
,可能不是问题,但是不同。
如果没有Runnable example,几乎不可能知道还有什么建议
答案 1 :(得分:0)
我终于发现这是一个硬件问题。我回到家并在同一个硬盘上的VM +上进行了测试。它工作正常,抱歉花时间回答。