我遵循了Java Hub中关于在JFrame上绘制图像的教程。除了JFrame基本上都会对其背后的任何东西进行截图之外,一切都可以完美运行;例如:Eclipse。然后它无缘无故地制作背景。JFrame以奇怪的背景
这就是我得到:
任何想法?
Main.java:
package Package;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JFrame;
public class Main extends JFrame {
BufferedImage sprite;
public Main(){
setSize(800, 600);
setVisible(true);
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
init();
}
private void init(){
BufferedImageLoader loader = new BufferedImageLoader();
BufferedImage spriteSheet = null;
try {
spriteSheet = loader.loadImage("sprites2.png");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
SpriteSheet ss = new SpriteSheet(spriteSheet);
sprite = ss.grabSprite(0, 0, 20, 32);
}
@Override
public void paint(Graphics g){
g.drawImage(sprite, 100, 100, null);
repaint();
}
public static void main(String[] args){
Main main = new Main();
}
}
SpriteSheet.java:
package Package;
import java.awt.image.BufferedImage;
public class SpriteSheet {
public BufferedImage spriteSheet;
public SpriteSheet(BufferedImage ss){
this.spriteSheet = ss;
}
public BufferedImage grabSprite(int x, int y, int width, int height){
BufferedImage sprite = spriteSheet.getSubimage(x, y, width, height);
return sprite;
}
}
BufferedImageLoader.java:
package Package;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.URL;
import javax.imageio.ImageIO;
public class BufferedImageLoader {
public BufferedImage loadImage(String pathRelativeToThis) throws IOException{
URL url = this.getClass().getResource(pathRelativeToThis);
BufferedImage img = ImageIO.read(url);
return img;
}
}
无异常被抛出...
1.图片链接被破坏。 2.我不明白你的问题 – BackSlash
我只是修复了图像链接抱歉...我只是不知道是什么导致了这个问题 - 图像会有帮助。 – user2550807
我认为你的应用在显示帧内容之前崩溃,代码会有帮助。另外,我在你的catch块中看到'Logger.getLogger [...]',用'e.printStackTrace()'取代它,看看是否有一个异常被抛出。如果你看到一些例外,用它更新你的问题 – BackSlash