java - 使用onMouseClicked方法时如何获取ImageView的ID?

标签 java javafx

我在使用 onMouseClicked 方法获取 imageViews 的 ID 时遇到问题。在此应用程序中,我有 20 个 ImageView,当我单击其中之一时,它应该将我的文件中的图像更改为图像。到目前为止,我有这个 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">

最佳答案

您正在使用 controller method event handler这意味着您的方法可以而且通常应该具有相应 Event 子类的单个参数。在您的情况下,当您设置 onMouseClicked 处理程序时,参数应该是 MouseEvent 。然后,您可以获得事件源,该事件源将是相应的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,因此您必须转换为适当的类型。

关于java - 使用onMouseClicked方法时如何获取ImageView的ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54728115/

相关文章:

Java 将值从数组传递到新对象实例

java - 建议 : Making parallel call from my service to another micro service

java - Hibernate中如何实现复合主键?

JavaFX 模块对 VM 不可见

java - JavaFX ListView 中的 WPF ListView.ItemTemplate 等效项是什么?

JavaFX:显示简单消息的最佳方式是什么?

java - JPA EntityManager持久方法不将实体保存到数据库,但持久后实体有id

java - 为什么这里需要同步?

java - 我如何在同一窗口/阶段中的前一个 Pane 的右侧立即在 java FX 中启动一个新 Pane ?

java - 在JavaFX中添加图像时如何保持背景颜色?