当前位置: 首页 > 知识库问答 >
问题:

使用Javafx和Maven的ImageView的URL路径

汝彭薄
2023-03-14

我正在设计一个JavaFX程序,使用zenjava基本原型。一切工作只是找到,除了当我想添加和图像使用ImageView小部件。

我在src/main/resources下创建了一个名为images的新文件夹,我将要在ImageView上显示的图像存储在该文件夹中。

因此,根据此图像被存储在 /src/main/resources/images/image.jpg

问题是,我打开SceneBuilder并从文件夹C:\用户\Toni\workspace\MyProject\src\main\资源\图像\image.jpg拖放图像,我可以在屏幕上看到图像。我保存fxml文件,然后打开它,fxml文件引用如下图像:

<ImageView fitHeight="200.0" fitWidth="200.0" layoutX="1463.0" layoutY="551.0">
     <image>
        <Image url="@../images/image.jpg" />
     </image>
  </ImageView>

但是,当我编译并运行它时,会出现以下错误:

[INFO] --- javafx-maven-plugin:8.1.2:run (default-cli) @ QAdmin ---
[INFO] Running JavaFX Application
null/../images/wait_time_icon.png
Exception in Application start method
[WARNING] 
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:297)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.RuntimeException: Exception in Application start method
at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:917)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$156(LauncherImpl.java:182)
... 1 more
Caused by: javafx.fxml.LoadException: 
unknown path:57

at javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2601)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2579)
at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2425)
at app.source.general.MainApp.start(MainApp.java:27)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$163(LauncherImpl.java:863)
at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$176(PlatformImpl.java:326)
at com.sun.javafx.application.PlatformImpl.lambda$null$174(PlatformImpl.java:295)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.application.PlatformImpl.lambda$runLater$175(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$149(WinApplication.java:191)
... 1 more
Caused by: java.lang.IllegalArgumentException: Invalid URL: Invalid URL or resource not found
at javafx.scene.image.Image.validateUrl(Image.java:1100)
at javafx.scene.image.Image.<init>(Image.java:681)
at com.sun.javafx.fxml.builder.JavaFXImageBuilder.build(JavaFXImageBuilder.java:47)
at com.sun.javafx.fxml.builder.JavaFXImageBuilder.build(JavaFXImageBuilder.java:37)
at javafx.fxml.FXMLLoader$ValueElement.processEndElement(FXMLLoader.java:763)
at javafx.fxml.FXMLLoader.processEndElement(FXMLLoader.java:2823)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2532)
... 11 more
Caused by: java.lang.IllegalArgumentException: Invalid URL or resource not found
at javafx.scene.image.Image.validateUrl(Image.java:1092)
... 17 more

显然,对图像@.../图像/image.jpg的引用不能正常工作。

因此,我的问题是:

我是否将图像资源放置在应该放置的位置?我怎么做才能引用这个图像正确使用fxml所以当我运行的应用程序,它会找到图像文件?

谢谢你!

共有1个答案

尉迟国发
2023-03-14

假设位于以下位置:

src/main/java/ - for the Java classes
src/main/resources/fxml/view.fxml
src/main/resources/images/image.png

您应该能够引用image.pngview.fxml使用:

<Image url="@/images/image.png" />
 类似资料:
  • 问题内容: 我需要使用javaFX2来执行以下操作: 1-)加载图像并使用imageView显示它。 [好] 2-)右键单击并选择“添加节点”选项,屏幕上将出现一个黑色圆圈,您可以将圆圈拖动到图像的任何位置。 [好] 3-)使用鼠标的滚轮来放大或缩小imageView,在图像上显示“ Zoom Sensation”。 [好] 3.1-) 但是,每次缩放图像时,我都希望圆遵循缩放比例,这意味着它们不

  • 我试图在登录窗口(stage)内创建一个精灵动画,使用JavaFX,一旦用户获得登录和密码信息,就会播放该动画。我试图使用Michael Heinrichs在他的博客文章中发布的关于使用JavaFX的sprite动画的类,但我无法使其工作,主要是因为我不知道如何在ImageView中创建这个动画,而不使用start方法(在我的情况下也不起作用)。 这是我在登录阶段的FXML文件中的代码: 在控制器

  • 我在视图中有一个ImageView,并尝试用它显示一个WritableImage实例。我正在外线程中绘制它,并通过侦听ObjectProperty的更改事件将其传递给视图。 imageView应该准备好接收图像,它由我的主视图显示。但是这是一个不合法的例外 线程“Thread-4”Java . lang . illegalstateexception中的异常:不在FX应用程序线程上;当前线程=线程

  • 我打算再试一次。。。我是Scenebuilder的新手,我正在尝试为我的项目创建一个照片库!我已经添加了我想要的,那就是一个图像视图,其中的图像是从FileChooser中选择的。。。但是现在我想得到一个建议,如何保存这个,并在每次按下addPhoto按钮时创建一个新的,而不是覆盖我在ImageView中已经有的。以下是我的addPhoto按钮代码: FXML代码:

  • 停留在基础上。我在设置图像路径时遇到了一些语法问题。当我尝试创建一个图像并给它图像路径时,它总是抛出一些关于路径的一些异常。我已经评论了一些我已经尝试过的路径组合。你能告诉我我做错了什么吗?谢谢你。 封装JOPOFX; 这是打印出来的内容:错误while creating image java.lang.IllegalArgumentException:无效URL:在javafx.scene.im

  • 在收到客户端请求时,web 容器确定转发到哪一个 Web 应用。选择的 Web 应用必须具有最长的上下文路径匹配请求 URL 的开始。当映射到Servlet 时,URL 匹配的一部分是上下文。 Web 容器接下来必须用下面描述的路径匹配步骤找出 servlet 来处理请求。 用于映射到 Servlet 的路径是请求对象的请求 URL 减去上下文和路径参数部分。下面的 URL 路径映射规则按顺序使用