前提・実現したいこと
SceneBuilderでImageViewに画像を表示させたいです。
発生している問題・エラーメッセージ
BaseView:NextView() 例外発生 java.lang.IllegalArgumentException: Invalid URL: Invalid URL or resource not found at javafx.graphics/javafx.scene.image.Image.validateUrl(Image.java:1107) at javafx.graphics/javafx.scene.image.Image.<init>(Image.java:617) at view.MainPageView.Init(MainPageView.java:16) at view.BaseView.NextView(BaseView.java:86) at application.Main.start(Main.java:38) at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$9(LauncherImpl.java:846) at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runAndWait$12(PlatformImpl.java:455) at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:428) at java.base/java.security.AccessController.doPrivileged(Native Method) at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$11(PlatformImpl.java:427) at javafx.graphics/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:96) at javafx.graphics/com.sun.glass.ui.win.WinApplication._runLoop(Native Method) at javafx.graphics/com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:174) at java.base/java.lang.Thread.run(Thread.java:834) Caused by: java.lang.IllegalArgumentException: Invalid URL or resource not found at javafx.graphics/javafx.scene.image.Image.validateUrl(Image.java:1099) ... 13 more
該当のソースコード
Javafx
1package application; 2 3import javafx.application.Application; 4import javafx.stage.Stage; 5import model.BaseModel; 6import view.BaseView; 7import view.MainPageView; 8 9/*********************************** 10 * 初期起動クラス 11 ***********************************/ 12public class Main extends Application { 13 14 /*********************************** 15 * 画面の初期設定を行う 16 * @Param primaryStage 17 ***********************************/ 18 @Override 19 public void start(Stage primaryStage) { 20 try{ 21 BaseView.setSTAGE(primaryStage); //ステージを保持させる 22 //最初のページの表示処理 23 24 25 MainPageView mpv = new MainPageView("MainPage.fxml"); 26 mpv.NextView(new BaseModel()); 27 28 29 30 31 }catch(Exception e){ 32 System.out.println("Main:start() 例外発生"); 33 e.printStackTrace(); 34 } 35 } 36 37 /*********************************** 38 * 最初に呼ばれるメソッド 39 * @param args //コマンドライン 40 ***********************************/ 41 public static void main(String[] args) { 42 launch(args); 43 } 44} 45 46
java
1package view; 2 3import java.util.HashMap; 4import java.util.Map; 5 6import javafx.collections.ObservableList; 7import javafx.fxml.FXMLLoader; 8import javafx.scene.Node; 9import javafx.scene.Scene; 10import javafx.scene.layout.AnchorPane; 11import javafx.scene.layout.Pane; 12import javafx.stage.Stage; 13import model.BaseModel; 14 15/*********************************** 16 * ビューのベースとなるクラス 17 ***********************************/ 18public abstract class BaseView<T extends Pane> { 19 static private Stage STAGE ; //ステージクラス 20 private BaseModel m_SendParam ; //画面遷移時のパラメータ引き渡し用クラス 21 private Map<String,Node> m_objectList ;//オブジェクトの配列 22 private final String PAGE_FILENAME ; //fxmlのファイル名 23 private T m_pane ; //ページのデータ 24 /*********************************** 25 * コンストラクタ 26 * @param i_fileName //ファイル名 27 ***********************************/ 28 public BaseView(String i_fileName ){ 29 PAGE_FILENAME = i_fileName ; 30 m_objectList = new HashMap<String,Node>(); 31 } 32 33 /*********************************** 34 * ステージを設定する 35 * @param i_STAGE 36 ***********************************/ 37 static public void setSTAGE(Stage i_STAGE){ 38 STAGE=i_STAGE; 39 } 40 41 /*********************************** 42 * 遷移時のパラメータを渡す 43 * @return m_SendParam 44 ***********************************/ 45 public BaseModel getParam(){ 46 return m_SendParam; 47 } 48 49 /*********************************** 50 * ページ遷移処理 51 * @param i_Model //引き渡しをしたいデータ 52 ***********************************/ 53 public void NextView( BaseModel i_Data){ 54 try { 55 56 //データを設定 57 m_SendParam = i_Data ; 58 59 //ページを作成 60 m_pane = FXMLLoader.load(getClass().getResource( "../fxml/" + PAGE_FILENAME)); 61 62 AnchorPane pane = (AnchorPane)m_pane; 63 64 65 66 //Sceneの設定 67 Scene scene = new Scene(m_pane,pane.getMaxHeight() , pane.getMaxWidth()); 68 scene.getStylesheets().add("fxml/application.css"); 69 STAGE.setTitle("WiZ Sample"); 70 STAGE.setScene(scene); 71 STAGE.show(); 72 73 //オブジェクトの取得 74 ObjectSet(m_pane.getChildren()); 75 76 //初期化処理 77 Init(); 78 79 } catch(Exception e) { 80 System.out.println("BaseView:NextView() 例外発生"); 81 e.printStackTrace(); 82 } 83 } 84 85 /*********************************** 86 * ページの配置オブジェクトを取得する 87 * @param i_date //ページのオブジェクト配列を取得(ページ変数.getChildren()) 88 **********************************/ 89 public void ObjectSet( ObservableList<Node> i_date) { 90 //データを配置 91 for( Node object : i_date) { 92 m_objectList.put(object.getId(), object); 93 } 94 } 95 96 /*********************************** 97 * 配置オブジェクトを取得 98 * @param i_objectName //fx:idの名前を指定 99 * @return 指定のオブジェクトを取得 取得できなければnullが返る 100 **********************************/ 101 public Node getObject(String i_objectName) { 102 return m_objectList.get(i_objectName) ; 103 } 104 105 /*********************************** 106 * ページのインスタンスを渡す 107 * @return 108 **********************************/ 109 public T getPane() { 110 return m_pane ; 111 } 112 113 /*********************************** 114 * 初期化処理 115 **********************************/ 116 abstract public void Init(); 117 118} 119
java
1package view; 2 3import javafx.scene.image.Image; 4import javafx.scene.image.ImageView; 5import javafx.scene.layout.AnchorPane; 6 7public class MainPageView extends BaseView<AnchorPane> { 8 9 public MainPageView(String i_fileName) { 10 super(i_fileName); 11 } 12 13 @Override 14 public void Init() { 15 16 Image image = new Image("vegetable.jpg"); 17 18 ImageView imageview = (ImageView) getObject("imageview"); 19 imageview.setImage(image); 20 21 } 22 23} 24
java
1package model; 2 3public class BaseModel { 4 5}
###階層
src
└application
├ Main.java
└fxml
├ MainPage.fxml
├ application.css
├ MainPage.css
└model
├ BaseModel.java
└view
├ BaseView.java
├ MainPageView.java
├vegetable.jpg
試したこと
パスを変えたり絶対パスで指定しました。
vegetable.jpgのファイル位置を変えました
補足情報(FW/ツールのバージョンなど)
JavaFX Scene Builder 11.0.0
JavaSE-11
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/14 07:10