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

使用fxml在JavaFX中显示图像

胡墨竹
2023-03-14

我一直试图使用FXML在JavaFX应用程序中显示我的图像,但没有成功。我的代码:

...
<ImageView fitHeight="24" fitWidth="24"
    pickOnBounds="true" preserveRatio="true">
        <Image url="@res/icon.png"/>
</ImageView>
...

没有错误,但我的图像没有显示。我想图像已加载,但未显示。
这可能吗?我怎么查?如果是的话,不应该有一个错误给它吗?

事实上,即使我给出了一个不正确的名称,也没有运行时错误。也许没上子弹?

我也试过加载不同的图像和改变尺寸,没有任何效果。

  1. “/res/icon.png”->运行时错误#1
  2. “res/icon.png”->林特错误+运行时错误#1
  3. “/../res/icon.png”->林特错误+运行时错误#1
  4. “../res/icon.png”->林特错误+运行时错误#1
  5. “@/res/icon.png”->运行时错误#2
  6. “@res/icon.png”->林特错误(我正在使用的内容)
  7. “@/../res/icon.png”->林特错误+运行时错误#2
  8. “@../res/icon.png”->林特错误,不显示

运行时错误#1:原因:java.lang.IllegalArgumentException:无效URL:无效URL或找不到资源

运行时错误#2:原因:javafx.fxml.loadException:无效的资源:在类路径上找不到/res/icon.png

(我知道我们不应该在URL中使用..或.。我只是在测试)

  1. 为什么图像不加载在JavaFX中,这正是我的配置。
  2. 如何使用ImageView显示图像,从这里我得到了在FXML中链接图像的正确方法。无错误,但图像未加载/显示。
  3. ImageView无法工作,但我希望仅在fxml中执行此操作。
  4. 无法再次加载JavaFX映像,仅fxml。
  5. 无法再次加载JavaFX中的图像(仅fxml)。
  6. 再次将图像加载到ImageView JavaFX(仅fxml)。
  7. JavaFX图像加载错误我没有使用CSS。
  8. 在后台和线程中加载JavaFX图像不是我感兴趣的。
  9. 如何确定正确的路径...非常广泛,但FXML怎么办?

编辑:我重新创建了一个原始项目的副本,并尝试在注释之后进行故障排除。

结果(故障排除部分的响应):

>

  • 正确的映像名称:名称有效,映像已正确部署到out文件夹。但IDE无法识别它,从而导致错误或不显示。

    正确路径

    a)绝对URL

    有趣的是,getClass().getResource(“/res/icon.png”).getExternalForm()方法给出:

     file:/C:/Users/Chander%20Shekhar/IdeaProjects/TestRes/out/production/TestRes/res/icon.png
    
    /C:/Users/Chander%20Shekhar/IdeaProjects/TestRes/out/production/TestRes/res/icon.png
    

    并且不工作(运行时错误#1)。删除第一个/时会出现另一个错误:

    Caused by: java.lang.IllegalArgumentException: Invalid URL: unknown protocol: c
    

     、 、 、 、 、 b)相关URL

    因此,我实际上在我的res文件夹中创建了一个标记类,并使用ImageMarker.class.GetResource(“icon.png”).ToExternalForm()

    file:/C:/Users/Chander%20Shekhar/IdeaProjects/TestRes/out/production/TestRes/res/icon.png
    

    但最后,所有这些仍然是无关紧要的,因为我使用的是FXML。上帝啊!

  • 共有1个答案

    龙嘉誉
    2023-03-14

    我建议您使用resources文件夹,并将您的FXML和图像都放在该文件夹中。因此您将拥有以下文件结构:

    src/
    |-- main/
        | -- java/
        | -- resources/
             | -- fxml/screen.fxml
             | -- img/image.png
    

    然后在screen.fxml上执行以下操作

    <ImageView pickOnBounds="true" preserveRatio="true">
        <image>
            <Image url="@../img/image.png" />
        </image>
    </ImageView>
    

    这就是我组织我的项目的方式,它工作的很好。CSS文件也将存在于资源中,希望对此有所帮助。

    PS:您有一个res/文件夹,但是除非您确认它,否则Java不会将其识别为资源文件夹。如果您在IntelliJ上,您可以右键单击它,然后选择“标记为资源根”。如果您使用maven,有一些方法可以将它声明为您的资源文件夹。无论如何,如果您只是将其重命名为resources/它将自动被视为您的资源文件夹。

     类似资料:
    • 我试图在JavaFX WebView组件中显示一个网站,但它只呈现一个空白页面。我已按如下方式设置了所有内容: 主控制器。Java语言 MainViewController.java Main.fxml 和 正如你们所见,我还用系统设置了一些代理设置。setProperty()。我也在没有特定代理设置的情况下尝试了它-我认为这不是问题所在。 我不知道我做错了什么。如果我启动应用程序,我可以看到We

    • 我想在JavaFX的ImageView中显示图像。图像应该从SQLite数据库中获取,并在场景加载时显示。我使用以下代码片段从数据库获取代码,并在之前创建的ImageView中显示它。但是图像没有按预期显示。我做错了吗?P. S.我测试了改变路径在两个和当读取文件从目录到。但似乎没有什么奏效。但是当我手动将一个图像文件放在src目录中并尝试读取它时,它就像一个魅力。但是我想展示一张从数据库中提取的

    • 我正在使用JavaFX,在那里我编写了一个包含的代码,通过我想在我的场景上显示图像,但它不起作用。图像不显示。 当我使用它还显示一个错误。虽然我70%的编码已经完成,但我只是坚持在现场显示图像(不上传)。 以下是我正在使用的代码: 所以,我需要的是通过单击按钮并选择图像来显示我的场景中的图像。

    • 问题内容: 开发需要显示pdf 的桌面应用程序。我了解到(当前版本)不支持pdf查看/显示,我也了解到。 现在,问题: 是否有任何外部组件或库可以在JavaFX中查看pdf?它应该是一个免费软件。 (如果必须使用)如何将其嵌入到我的应用程序中。 问题答案: JPedalFX示例代码和用法 JPedalFX下载提供了有关使用JPedalFX的示例代码。 我有点of脚,但是我只是在这里粘贴从JPeda

    • 我有一个装满图像的文件夹要在我正在创建的游戏中实现,我想在窗口中显示这些。这是我迄今为止的代码。 这将是一个程序在IntelliJ/中从jar运行。“资产”文件夹与此文件位于同一目录中。我没有发现文件路径错误,所以我假设它可以找到图像,但它不会出现在屏幕上,而矩形会出现。 公平警告,我正在从头开始学习JavaFX,我发现没有太多关于事物如何工作的解释,所以这可能是一个愚蠢的问题。

    • 它应该显示一个与掷骰子一致的图像,但什么也没有发生。有问题的图像在包中(如果有关系,请单击并拖入项目窗口)。我在system.out.print中添加了t,以便显示Dice1和2的结果,这样我就知道这是有效的。 我还需要添加一些东西来使它看起来像吗?我以前从未在JavaFX中使用过实际的图像....总的来说,我对JavaFX是新手。 GetChildren c:\users\ethan c.b的错