我遵循了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