我正在尝试使用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 回答
这是解决方案 . 对于您的路径,请使用
file:Thumbnails/IMG_0004.jpg
. 实际上,您必须使用 file: 前缀 .