我在使用onMouseClicked方法获取imageViews的ID时遇到麻烦。在此应用程序中,我有20个ImageViews,当我单击其中的一个时,它应将文件中的图像更改为图像。到目前为止,我有这个imagePicker方法,其中我使用imgViewOne测试了图像更改,它是第一个ImageView的ID,并且可以正常工作。
public void imagePicker() {
try {
File file = new File("/home/zoran/eclipse-workspace/Pogodi tko sam/bin/application/iks.png");
String localUrl = file.toURI().toURL().toString();
Image image = new Image(localUrl);
//imgViewOne.setImage(image);
} catch (MalformedURLException e) {
System.out.println("Malformed url ex");
e.printStackTrace();
}
}
我在这里找到了一些有关获取文本字段ID或其他元素的答案,但是它们都有事件处理程序,可以在这些事件处理程序上调用event.getID().
,但是这里没有事件处理程序,所以我不知道如何获得ID。
我试图将参数设置为imagePicker,例如imagePicker(ImageView v),然后调用String id = v.getID();
,但无法更改此属性上的图像。
如果有人知道解决方案,请与我分享。提前致谢!
编辑: 每个ImageView都具有id imagePicker的onMouseCliked方法,因此每次单击都会转到该方法。
<ImageView fx:id="trinaesta" onMouseClicked="#imagePicker" fitHeight="150.0" fitWidth="200.0" pickOnBounds="true" preserveRatio="true" GridPane.rowIndex="3">
答案 0 :(得分:3)
您正在使用controller method event handler,这意味着您的方法可以并且通常应该具有适当的Event
子类的单个参数。对于您的情况,在设置MouseEvent
处理程序时,参数应为onMouseClicked
。然后,您可以获取事件的来源,该来源将是相应的ImageView
(将处理程序添加到ImageView
中)。
public void imagePicker(MouseEvent event) {
event.consume();
try {
File file = new File("/home/zoran/eclipse-workspace/Pogodi tko sam/bin/application/iks.png");
String localUrl = file.toURI().toURL().toString();
Image image = new Image(localUrl);
((ImageView) event.getSource()).setImage(image); // set image on clicked ImageView
} catch (MalformedURLException e) {
System.out.println("Malformed url ex");
e.printStackTrace();
}
}
请注意,getSource
返回Object
,因此您必须转换为适当的类型。