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

JavaFX中ImageView中的setImage()正确的图像参数是什么?

白宏放
2023-03-14

我正在尝试使用JavaFX和IntelliJ制作一个照片浏览器程序,并为一个按钮创建了一个actionEvent,该按钮应该在单击时更改照片。

如果像下面这样的图像构造函数只有一个字符串文件路径,它就可以正常工作(try#1),但是当我尝试使用目录和存储在字符串数组中的文件名(try#2)或带有文件路径的字符串数组(try#3)的组合时,它就不起作用了。当我尝试打印我在下面的图像构造函数中输入的内容的输出时,try#2打印了try#1(/Thumbnails/IMG#u 0004.jpg)构造函数中的文本,try#3打印了图像的完整文件路径(/Users/Amrit/Google Drive/Computer Science/Mini IA/PhotoBrowser/src/Imported/IMG#0004.jpg)

试试看

public void changeRight(ActionEvent actionEvent) {
    image1.setImage(new Image("/Thumbnails/IMG_0004.jpg"));
}

试试#2

public void changeRight(ActionEvent actionEvent) {
    image1.setImage(new Image("/Thumbnails/" + fileNameArray[3]));
}

试试#3

public void changeRight(ActionEvent actionEvent) {
    image1.setImage(new Image(stringFilePathArray[3]));
}

此changeRight方法位于一个控制器类中,该类链接到一个名为sample.fxml的cxml文件,该文件是我使用JavaFX Scene Builder 2.0创建的。所有图像都存储在项目文件夹(PhotoBrowser)中的目录:“/PhotoBrowser/src/Thumbnails/ImageName.jpg”

对于所有这些,我都得到了一个空指针异常,不知道为什么或者如何修复它。

以下是fxml文件中ImageView的代码,它位于GridPane的子级中:

<ImageView id="imgView1" fx:id="image1" fitHeight="195.0" fitWidth="300.0"    onMouseClicked="#imgClick" pickOnBounds="true" preserveRatio="true"    GridPane.columnIndex="1" GridPane.halignment="CENTER" GridPane.rowIndex="1"   GridPane.valignment="CENTER">
     <image>
        <Image url="@../Thumbnails/IMG_0001.jpg" />
     </image></ImageView>

共有1个答案

姜明贤
2023-03-14

这是解决办法。对于路径,请使用文件:缩略图/IMG_0004.jpg。实际上,您必须使用file:prefix。

 类似资料:
  • 我有一个名为“AdjustmentBar”的类,它包括一个imageView、一个菜单栏和一些图片编辑函数(一个FXML文件和一个控制器)。AdjustmentBar被加载到另一个名为“ExaminationDisplayer”的类(也是一个FXML文件和一个控制器)。ExaminationDisplayer从一个在线MySQL数据库加载一些图像,我希望这些图像都显示在一个独立的ImageView

  • 我看到这个问题问了很多,但我还没有看到一个非常普遍的方法。我正在使用JavaFX在JavaEclipse Oxygen中开发一个桌面应用程序,我有一个加载器,我想在任何时候通过超文本传输协议加载图像。当用户单击不同的行时,图像必须通过超文本传输协议加载。所以我把我的加载器放在图像的顶部,我只是使用;来显示或隐藏它。fxml中的加载器ImageView在GridPane中看起来像这样。 设置加载器映

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

  • 我想问一下,是否有人知道JavaFX ImageView如何处理图像清理。当图像对象/内存空闲时。 以下是给我带来问题的情况:我的场景中有两个“标签”。这是我的标签:在父窗格中的按钮和切换窗格。每个选项卡都有自己的ImageView。在切换窗格之前,我先在旧ImageView上设置空图像,然后加载新图像。我原以为在切换标签后,旧图像从旧图像视图将是免费的,但事实并非如此。 为了监控行为,我使用Ja

  • 我正在尝试使用数据库的第一个图像设置ImageView。由于某种原因,它不起作用,我不知道为什么。方法loadImage在不同的类中调用。 我还试着用一个单独的方法设置图像,但我需要在创建整个舞台场景等的同时调用它,即使从第二个方法那样调用它,它也不起作用。 这是持有setImage的类 当调用时,设置图像会给我一个null值,imageview的默认值为null,但实际上我正在加载一个图像,甚至

  • 我的FXML中有以下图像: 我的xml文件在里面: 另一方面,我的图标在里面: 为什么我得到无效资源的错误。。。在类路径上找不到?我不知道我做错了什么,也不知道如何使路径工作。