前提・実現したいこと
Scene builderを使いJavaFxで画像を表示させたいのですがエラーが出て困ってます
画像はJavaやfxmlと同じパスに入ています
発生している問題・エラーメッセージ
java.lang.IllegalArgumentException: Invalid URL: Invalid URL or resource not found at javafx.scene.image.Image.validateUrl(Image.java:1118) at javafx.scene.image.Image.<init>(Image.java:620) at application.Main.start(Main.java:21) at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$166(LauncherImpl.java:863) at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$179(PlatformImpl.java:326) at com.sun.javafx.application.PlatformImpl.lambda$null$177(PlatformImpl.java:295) at java.security.AccessController.doPrivileged(Native Method) at com.sun.javafx.application.PlatformImpl.lambda$runLater$178(PlatformImpl.java:294) at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95) at com.sun.glass.ui.win.WinApplication._runLoop(Native Method) at com.sun.glass.ui.win.WinApplication.lambda$null$152(WinApplication.java:177) at java.lang.Thread.run(Thread.java:748) Caused by: java.lang.IllegalArgumentException: Invalid URL or resource not found at javafx.scene.image.Image.validateUrl(Image.java:1110) ... 11 more
該当のソースコード
java
1package application; 2import javafx.application.Application; 3import javafx.stage.Stage; 4import javafx.scene.Group; 5import javafx.scene.Scene; 6import javafx.scene.image.Image; 7import javafx.scene.image.ImageView; 8import javafx.scene.layout.AnchorPane; 9import javafx.fxml.FXML; 10import javafx.fxml.FXMLLoader; 11 12public class Main extends Application { 13 @FXML 14 private ImageView Image_Back; 15 16 @Override 17 public void start(Stage primaryStage) { 18 try { 19 AnchorPane root = (AnchorPane) FXMLLoader.load(getClass().getResource("Sample.fxml")); 20 Scene scene = new Scene(root); 21 22 Image image = new Image("back.jpg"); 23 ImageView iv = new ImageView(image); 24 iv.setImage(image); 25 26 Image image2 = new Image("money_okanemochi.png"); 27 ImageView iv2 = new ImageView(image2); 28 iv2.setImage(image2); 29 30 scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm()); 31 primaryStage.setScene(scene); 32 primaryStage.show(); 33 } catch (Exception e) { 34 e.printStackTrace(); 35 } 36 } 37 38 public static void main(String[] args) { 39 launch(args); 40 } 41} 42
fxml
1<?xml version="1.0" encoding="UTF-8"?> 2 3<?import javafx.scene.control.Button?> 4<?import javafx.scene.image.Image?> 5<?import javafx.scene.image.ImageView?> 6<?import javafx.scene.layout.AnchorPane?> 7 8<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="application.SampleController"> 9 <children> 10 <ImageView fitHeight="403.0" fitWidth="659.0" layoutX="-48.0" layoutY="-1.0" pickOnBounds="true"> 11 <image> 12 <Image url="@back.jpg" /> 13 </image> 14 </ImageView> 15 <ImageView fitHeight="362.0" fitWidth="494.0" layoutX="66.0" layoutY="21.0" pickOnBounds="true" preserveRatio="true"> 16 <image> 17 <Image url="@money_okanemochi.png" /> 18 </image> 19 </ImageView> 20 <Button layoutX="268.0" layoutY="225.0" mnemonicParsing="false" prefHeight="31.0" prefWidth="63.0" text="スタート" /> 21 <Button layoutX="269.0" layoutY="279.0" mnemonicParsing="false" prefHeight="31.0" prefWidth="63.0" text="終了" /> 22 </children> 23</AnchorPane> 24
試したこと
パスを変えたり、絶対パスで指定したが表示できませんでした。
補足情報(FW/ツールのバージョンなど)
JavaFX Scene Builder 8.5.0
追記
全てのファイル階層を追記いたします
src
└application
├ Main.java
├ SampleController.java
├ Sample.fxml
├ back.jpg(使いたい画像)
├ money_okanemochi.png(使いたい画像)
└ application.css
SampleController.javaの中には何も記述していません
回答1件
あなたの回答
tips
プレビュー