【发布时间】:2013-07-04 14:22:52
【问题描述】:
我遵循了 Java Hub 上关于在 JFrame 上绘制图像的教程。一切都完美无缺,除了 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.我没听懂你的问题
-
我刚刚修复了图片链接,对此感到抱歉...我只是不知道是什么导致了问题——图片会很有帮助。
-
我认为您的应用程序在显示框架内容之前崩溃,代码会有所帮助。另外,我在您的 catch 块中看到
Logger.getLogger[...],将其替换为e.printStackTrace()并查看是否引发了一些异常。如果您看到一些异常,请用它更新您的问题 -
我更改了 catch{...} 但没有抛出异常,我还添加了代码。
标签: java swing jframe bufferedimage translucency