JavaFX很多用于ImageViews的类似MouseEvents

时间:2017-02-27 09:25:42

标签: java javafx

嗨我有大量类似拖放事件的图像问题,我将标签移动到其他图像视图。

代码示例:

{{1}}

是否有任何解决方案可以缩短代码?

1 个答案:

答案 0 :(得分:0)

您可以将Label指定为相应userData的{​​{1}},这样您就可以使用事件来源检索ImageView,从而可以使用所有Label的相同事件处理程序。

以下示例使用ImageViewButton事件来简化,但同样的方法也适用于您的问题:

FXML

onMouseClicked

控制器

<Label text="Hello World" fx:id="label1"/>
<Button text="Print Label 1" onMouseClicked="#click" userData="$label1"/>

(您甚至不需要控制器中的@FXML private void click(MouseEvent event) { // retrieve the node the event occured on Button btn = (Button) event.getSource(); // retrieve Label associated with event source Label label = (Label) btn.getUserData(); // now we've got all info we need without using any field of the controller System.out.println(label.getText()); } 字段。)