添加 JFrame 背景导致 .JAR 被破坏
adding JFrame background caused .JAR to be broken
我想知道我的代码中有什么问题导致 .JAR 文件损坏?当我双击 jar 文件时,它没有打开,但在将背景图像添加到 JFrame 之前没问题。
我创建了一个名为 Cube 的 class 来绘制立方体,我想将背景图像设置为 JFrame,所以我在 Cube 中添加了字段 class
private BufferedImage bg;
bg 在 class 构造函数中初始化
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);
}
在 main class 我创建了 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 );
因为我没有你的 jar 文件,所以我无法知道问题所在。您需要将该文件作为资源而不是新文件来访问,因为它在 jar 中。首先,您应该使用 cmd 运行 jar 并查看它是否为您提供堆栈跟踪。使用命令:java -jar filename.jar
通过命令提示符 运行 jar。
尝试使用:
Cube.class.getResourceAsStream("bg_image.jpg");
bg = ImageIO.read(new File("bg_image.jpg"));
此代码表示 bg_image.jpg
应该靠近 .jar
您可以将图片放入资源中并像这样加载它:
Cube.class.getClassLoader().getResourceAsStream("bg_image.jpg");
ps: 在构造函数中加载资源是个坏主意!
我想知道我的代码中有什么问题导致 .JAR 文件损坏?当我双击 jar 文件时,它没有打开,但在将背景图像添加到 JFrame 之前没问题。
我创建了一个名为 Cube 的 class 来绘制立方体,我想将背景图像设置为 JFrame,所以我在 Cube 中添加了字段 class
private BufferedImage bg;
bg 在 class 构造函数中初始化
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);
}
在 main class 我创建了 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 );
因为我没有你的 jar 文件,所以我无法知道问题所在。您需要将该文件作为资源而不是新文件来访问,因为它在 jar 中。首先,您应该使用 cmd 运行 jar 并查看它是否为您提供堆栈跟踪。使用命令:java -jar filename.jar
通过命令提示符 运行 jar。
尝试使用:
Cube.class.getResourceAsStream("bg_image.jpg");
bg = ImageIO.read(new File("bg_image.jpg"));
此代码表示 bg_image.jpg
应该靠近 .jar
您可以将图片放入资源中并像这样加载它:
Cube.class.getClassLoader().getResourceAsStream("bg_image.jpg");
ps: 在构造函数中加载资源是个坏主意!