【问题标题】:setImage() in ImageView in JavaFX what is the correct image parameter?JavaFX 中 ImageView 中的 setImage() 什么是正确的图像参数?
【发布时间】:2015-05-20 14:10:54
【问题描述】:

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

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

试试#1

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 方法位于一个控制器类中,该控制器类链接到我使用 JavaFX Scene Builder 2.0 制作的名为 sample.fxml 的 cxml 文件。所有图像存储的目录在项目文件夹(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>

【问题讨论】:

  • 您的 FXML 代码是否获得了 NPE?您的控制器在哪个包中?
  • 这与您的问题无关,但我还必须提到,您必须记住,如果您的图像位于您的项目中(= 稍后在您的 jar 中),您将不会无需重建整个 jar 即可动态修改缩略图。
  • 我将文件移动到项目文件夹中,并将允许我将它们读入控制器类的代码现在可以正常工作,谢谢!

标签: java image intellij-idea javafx fxml


【解决方案1】:

这里是解决方案。对于您的路径,请使用 file:Thumbnails/IMG_0004.jpg。 实际上,您必须使用 file: 前缀。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多