【发布时间】: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