- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
很抱歉问了这样一个初学者问题,但我无法让它工作,而且我也找不到答案。
我想在我的 .jar 文件中有一个图像并加载它。虽然这听起来很简单,但我只能在从 IDE 内部运行时加载图像,但在制作 .jar 后就不能再加载了(感谢谷歌,我能够在 .jar 中获取 .png)。这是我尝试过的:
BorderPane bpMain = new BorderPane();
String fs = File.separator;
Image imgManikin;
try {
imgManikin = new Image(
Main.class.getProtectionDomain().getCodeSource().getLocation().toURI().toString()+"\\manikin.png");
bpMain.setBottom(new Label(Main.class.getProtectionDomain().getCodeSource().getLocation().toURI().toString()+"\\manikin.png"));
} catch (URISyntaxException e) {
imgManikin = new Image(
Main.class.getProtectionDomain().getCodeSource().getLocation().getPath()+"\\manikin.png");
System.out.println(Main.class.getProtectionDomain().getCodeSource().getLocation().getPath()+"\\manikin.png");
bpMain.setBottom(new Label(Main.class.getProtectionDomain().getCodeSource().getLocation().getPath()+"\\manikin.png"));
}
//Image imgManikin = new Image("file:src\\manikin.png");
ImageView imgvBackground = new ImageView(imgManikin);
imgvBackground.setFitWidth(100);
imgvBackground.setPreserveRatio(true);
bpMain.setCenter(imgvBackground);
primaryStage.setTitle("Kagami");
primaryStage.setScene(new Scene(bpMain, 300, 275));
primaryStage.show();
不用说它没有用。它向我显示了底部的标签和预期的路径,但它的接缝就像路径不对一样。 (我也尝试使用 File.seperator
而不是 \\
甚至 /
,但我每次都得到相同的结果:它告诉我路径但不会加载图像。
我使用的是 Windows 7,IDE 是 IntelliJ,我有最新的 Java 更新。
最佳答案
如果 jar 文件在您的应用程序的类路径中,并且要加载的图像位于 jar 文件的根目录中,则可以通过以下方式轻松加载图像:
URL url = getClass().getResource("/manikin.png");
BufferedImage awtImg = ImageIO.read(url);
Image fxImg = SwingFXUtils.toFxImage(awtImg, new Image());
Image fxImgDirect = new Image(url.openStream());
虽然 ImageIO
返回一个 BufferedImage
,但可以使用 SwingUtils
将其转换为 fx Image
。但是,首选方法是使用 URL
中的 InputStream
直接创建一个新的 Image
实例。
另见 Load image from a file inside a project folder .如果操作正确,它是从 jar 文件还是本地文件系统加载都没有关系。
关于javafx - 从 jar 中加载图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37054168/
我正在开发一个需要能够平均三个数字的 Facebook 应用程序。但是,它总是返回 0 作为答案。这是我的代码: $y = 100; $n = 250; $m = 300; $number = ($y
我只是无法弄清楚这一点,也找不到任何对我来说有意义的类似问题。我的问题:我从数据库中提取记录,并在我的网页上以每个面板 12 条的倍数显示它们。因此,我需要知道有多少个面板可以使用 JavaScrip
我是一名优秀的程序员,十分优秀!