如何在fxml中为image设置事件处理程序。我写了以下3个图像,我想点击它们,然后它们调用我已在控制器类中创建的函数。我已经尝试过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>
我也检查了其他帖子,但他们都说如何在实际定义图像时这样做。 任何建议表示赞赏。
答案 0 :(得分:4)
没有onAction
,因为ImageView
,实际上不是可点击的组件,但没有什么可以阻止您收听其鼠标事件,因此您可以使用onMousePressed
或{ {1}}。此外,设置orMouseClicked
为true可确保即使您单击图像的透明部分也会触发事件。以下是FXML文件的示例:
pickOnBounds
其控制器中的相应方法:
<ImageView onMousePressed="#imageClicked" pickOnBounds="true">
<image>
<Image url="http://cdn.sstatic.net/Sites/stackoverflow/company/img/logos/so/so-icon.png"/>
</image>
</ImageView>
结果:
点击:ImageView @ 7bf40ff6 [styleClass = image-view]