嗨我有大量类似拖放事件的图像问题,我将标签移动到其他图像视图。
代码示例:
{{1}}
是否有任何解决方案可以缩短代码?
答案 0 :(得分:0)
您可以将Label
指定为相应userData
的{{1}},这样您就可以使用事件来源检索ImageView
,从而可以使用所有Label
的相同事件处理程序。
以下示例使用ImageView
和Button
事件来简化,但同样的方法也适用于您的问题:
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());
}
字段。)