添加JFrame背景导致.JAR被破坏

时间:2015-05-11 20:10:44

标签: java jframe

我想知道我的代码中导致.JAR文件被破坏的问题是什么?当我双击jar文件时它没有打开,但在将背景图像添加到JFrame之前没问题。

我创建了一个名为Cube的类来绘制多维数据集,我想将背景图像设置为JFrame,所以我在Cube类中添加了字段

private BufferedImage bg;

在类构造函数中初始化

publice Cube() {
bg = ImageIO.read(new File("bg_image.jpg"));
}

这段代码用于设置背景

@Override
public void paintComponent(Graphics g) {

    super.paintComponent(g);
    g.drawImage(bg, 0, 0, this);
}

在主类我创建了JFrame对象来绘制立方体

    JFrame jf = new JFrame();
    jf.add(new Cube());
    jf.setEnabled(true);
    jf.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
    jf.setResizable(false);
    jf.setSize( 500, 500 );
    jf.setVisible( true );

2 个答案:

答案 0 :(得分:0)

由于我没有你的jar文件,所以我无法知道这个问题。您需要将文件作为资源而不是新文件来访问,因为它位于jar中。首先,您应该使用cmd来运行jar并查看它是否为您提供堆栈跟踪。使用命令:java -jar filename.jar通过命令提示符运行jar。

尝试使用:

Cube.class.getResourceAsStream("bg_image.jpg");

答案 1 :(得分:0)

  

bg = ImageIO.read(新文件(“bg_image.jpg”));

此代码表示bg_image.jpg应该靠近.jar

您可以将图片放入资源并加载,如:

Cube.class.getClassLoader().getResourceAsStream("bg_image.jpg");

ps:在构造函数中加载资源是个坏主意!