首页 文章

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

提问于
浏览
1

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

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

Try #1

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

Try #2

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

Try #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 回答

  • 1

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

相关问题