如何在 FXML(Javafx 项目)中为图像设置监听器?
how to set listener for image in FXML (Javafx Project)?
如何在 fxml 中为图像设置事件处理程序。我写了以下 3 张图片,我想点击它们,它们会调用我已经在我的控制器中创建的函数 class 。我已经尝试过 onMouseClick 和 onAction 它们都不行。
<ImageView fitHeight="31.0" fitWidth="29.0" pickOnBounds="true" preserveRatio="true" GridPane.columnIndex="1" GridPane.rowIndex="0" >
<image >
<Image url="@/views/add.png" />
</image>
</ImageView>
<ImageView fitHeight="31.0" fitWidth="29.0" pickOnBounds="true" preserveRatio="true" GridPane.columnIndex="1" GridPane.rowIndex="1">
<image>
<Image url="@/views/remove.png" />
</image>
</ImageView>
<ImageView fitHeight="31.0" fitWidth="29.0" pickOnBounds="true" preserveRatio="true" GridPane.columnIndex="1" GridPane.rowIndex="2">
<image>
<Image url="@/views/edit.png" />
</image>
</ImageView>
我也查看了其他 post,但他们都说了在实际定义图像时如何操作。
任何建议表示赞赏。
没有onAction
因为ImageView
不是真正的可点击组件,但没有什么可以阻止你监听它的鼠标事件,所以你可以使用onMousePressed
或orMouseClicked
.此外,将 pickOnBounds
设置为 true 可确保即使您单击图像的透明部分也会触发事件。这是一个示例 FXML 文件:
<ImageView onMousePressed="#imageClicked" pickOnBounds="true">
<image>
<Image url="http://cdn.sstatic.net/Sites/Whosebug/company/img/logos/so/so-icon.png"/>
</image>
</ImageView>
及其控制器中对应的方法:
@FXML
public void imageClicked(MouseEvent event) {
System.out.println("Clicked: "+event.getSource());
}
结果:
Clicked: ImageView@7bf40ff6[styleClass=image-view]
如何在 fxml 中为图像设置事件处理程序。我写了以下 3 张图片,我想点击它们,它们会调用我已经在我的控制器中创建的函数 class 。我已经尝试过 onMouseClick 和 onAction 它们都不行。
<ImageView fitHeight="31.0" fitWidth="29.0" pickOnBounds="true" preserveRatio="true" GridPane.columnIndex="1" GridPane.rowIndex="0" >
<image >
<Image url="@/views/add.png" />
</image>
</ImageView>
<ImageView fitHeight="31.0" fitWidth="29.0" pickOnBounds="true" preserveRatio="true" GridPane.columnIndex="1" GridPane.rowIndex="1">
<image>
<Image url="@/views/remove.png" />
</image>
</ImageView>
<ImageView fitHeight="31.0" fitWidth="29.0" pickOnBounds="true" preserveRatio="true" GridPane.columnIndex="1" GridPane.rowIndex="2">
<image>
<Image url="@/views/edit.png" />
</image>
</ImageView>
我也查看了其他 post,但他们都说了在实际定义图像时如何操作。 任何建议表示赞赏。
没有onAction
因为ImageView
不是真正的可点击组件,但没有什么可以阻止你监听它的鼠标事件,所以你可以使用onMousePressed
或orMouseClicked
.此外,将 pickOnBounds
设置为 true 可确保即使您单击图像的透明部分也会触发事件。这是一个示例 FXML 文件:
<ImageView onMousePressed="#imageClicked" pickOnBounds="true">
<image>
<Image url="http://cdn.sstatic.net/Sites/Whosebug/company/img/logos/so/so-icon.png"/>
</image>
</ImageView>
及其控制器中对应的方法:
@FXML
public void imageClicked(MouseEvent event) {
System.out.println("Clicked: "+event.getSource());
}
结果:
Clicked: ImageView@7bf40ff6[styleClass=image-view]