首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >适用于ImageViews的许多类似的MouseEvents

适用于ImageViews的许多类似的MouseEvents
EN

Stack Overflow用户
提问于 2017-02-27 17:25:42
回答 1查看 108关注 0票数 0

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

代码示例:

代码语言:javascript
运行
复制
//drag and drope for imageview01
@FXML
private void handleDragDetected1(MouseEvent event) {
      Dragboard db = imageview01.startDragAndDrop(TransferMode.ANY);
      ClipboardContent cb = new ClipboardContent();
      cb.putImage(imageview01.getImage());
      cb.putString(imageview01_label.getText());
      db.setContent(cb);
      System.out.println("Picture 1 is draged");
}
...
...
//drag and drope for imageview100
@FXML
private void handleDragDetected100(MouseEvent event) {
     ...
     ...
}

有没有缩短代码的解决方案?

EN

Stack Overflow用户

回答已采纳

发布于 2017-02-28 01:20:55

您可以将Label指定为相应ImageViewuserData,这允许您使用事件源来检索Label,从而允许您对所有ImageView使用相同的事件处理程序。

为简单起见,下面的示例使用了ButtononMouseClicked事件,但同样的方法也适用于您的问题:

FXML

代码语言:javascript
运行
复制
<Label text="Hello World" fx:id="label1"/>
<Button text="Print Label 1" onMouseClicked="#click" userData="$label1"/>

控制器

代码语言:javascript
运行
复制
@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());
}

(您甚至不需要控制器中的label1字段。)

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42482003

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档