setOnMouseDragged(event ->{//设定鼠标长按0.3秒后才可拖拽 防止误操作

isCanDrag =true; //(System.currentTimeMillis() - mousedownMills) > 300;

});

setOnDragDetected(event->{if (this.getTestAction() == null && !this.isScreenshotStep || !isCanDrag) {return;

}

scriptShowController.listView.getSelectionModel().clearSelection();

scriptShowController.listView.getSelectionModel().select(items.indexOf(this));//开始拖拽

Dragboard dragboard =startDragAndDrop(TransferMode.MOVE);//当前步骤截图

WritableImage snapshot = this.getParent().snapshot(new SnapshotParameters(), null);

ImageView ig= newImageView(snapshot);//ig.setOnScroll(e->{//double deltaY = e.getDeltaY();//log.info("item:"+deltaY);//});//javafx.scene.Node s= ((javafx.scene.Node)event.getSource());//javafx.scene.Node t= (javafx.scene.Node)event.getTarget();//if(s!=null) {//s.setOnScroll(e -> {//double deltaY = e.getDeltaY();//log.info("S:" + deltaY);//});//}//if(t!=null) {//t.setOnScroll(e -> {//double deltaY = e.getDeltaY();//log.info("T:" + deltaY);//});//}

dragboard.setDragView(ig.getImage());

ClipboardContent content= newClipboardContent();

content.putString(String.valueOf(items.indexOf(this)));

dragboard.setContent(content);

event.consume();

});//拖拽经过的item设置TransferMode

setOnDragOver(event ->{if (this.getTestAction() == null && !this.isScreenshotStep) {return;

}if (!event.getDragboard().getString().equals(String.valueOf(items.indexOf(this))) &&event.getDragboard().hasString()) {

event.acceptTransferModes(TransferMode.MOVE);

}

event.consume();

});//拖拽进入Item时设置透明度0.3

setOnDragEntered(event ->{if (!event.getDragboard().getString().equals(String.valueOf(items.indexOf(this))) &&event.getDragboard().hasString()) {

setOpacity(0.3);

log.info("setOnDragEntered");

}

});//拖拽离开Item时设置为不透明

setOnDragExited(event ->{if (!event.getDragboard().getString().equals(String.valueOf(items.indexOf(this))) &&event.getDragboard().hasString()) {

setOpacity(1);

log.info("setOnDragExited");

}

});//拖拽放下时的相关逻辑

setOnDragDropped(event ->{if (this.getTestAction() == null && !this.isScreenshotStep) {return;

}

Dragboard db=event.getDragboard();boolean success = false;if(db.hasString()) {//调整Item的位置

StepItemController dragItem =(StepItemController) event.getGestureSource();int draggedIdx =items.indexOf(dragItem);int thisIdx = items.indexOf(this);if (draggedIdx !=thisIdx) {

items.remove(draggedIdx);

items.add(thisIdx, dragItem);//更新角标

this.scriptShowController.getLogic().updateStepIndexs();//更新TestAction顺序

SingleTestCase.getInstance().dragActions(draggedIdx, thisIdx);if (UIController.getScriptShowController() != null) {

UIController.getScriptShowController().setSaveScript(true);

}

UndoRedoUtil.addDragUndo(draggedIdx, thisIdx);

}

scriptShowController.listView.getSelectionModel().clearSelection();

scriptShowController.listView.getSelectionModel().select(thisIdx);

success= true;

}

setOpacity(1);

isCanDrag= false;

event.setDropCompleted(success);

event.consume();

log.info("setOnDragDropped");

});

setOnDragDone(DragEvent::consume);

java 鼠标滚轮监听事件_问题记录:JavaFx 鼠标滑轮滚动事件监听!相关推荐

  1. java控制鼠标滑轮的滚动速度来滚动滚动面板和鼠标滑轮滚动事件

    //虽然比较短,但还是分享下吧....就当是个随笔吧- //设置滚动面板的滚动速度 JScrollPane.getVerticalScrollBar().setUnitIncrement(10); / ...

  2. vue 组件封装 | s-fullpage 全屏滚动 (内含绑定鼠标滑轮滚动事件、避免鼠标滑轮连续滚动、滑动过渡动画等实用技巧)

    目录 目标 实现原理(要点) 完整代码 s-fullpage 和 s-fullpageItem s-fullpage.vue s-fullpageItem.vue 使用范例 范例效果 目标 实现类似插 ...

  3. linux电脑滚轮不能用,鼠标滚轮不能用,小编教你电脑鼠标滚轮不能用怎么办

    电脑用户最近遇到了一个问题,他们发现鼠标滚轮在一些应用下会不起作用.比如,我们用edge浏览器打开网页时,鼠标滚轮上下滚动会失效,而在原有的程序里则正常,那么怎么解决鼠标滚轮不能用的问题呢?下面,小编 ...

  4. 判断鼠标滑轮滚动事件

    windowAddMouseWheel() {let that = thislet scrollFunc = function (e) {e = e || window.eventif (e.whee ...

  5. dom事件对象、解绑事件、事件委托、页面加载、滚动事件、页面尺寸事件

    1.e.type获取事件类型,例如click input focus <input type="text"> <script>let input=docum ...

  6. linux电脑滚轮不能用,图文详解电脑鼠标滚轮不动了怎么办_电脑鼠标滚轮不能用的三种解决方法-系统城...

    近期,许多小伙伴发现电脑鼠标滚轮失灵了,无缘无故的就无法使用,浏览网页玩游戏都没办法继续进行,真的很麻烦.针对电脑鼠标滚轮不动了的故障,小编收集整理具体原因和解决方法给大家,希望大家采纳! 原因一:鼠 ...

  7. mac鼠标滚轮 触控板_如何在Mac上为滚轮而不是触摸板禁用自然滚动

    mac鼠标滚轮 触控板 Does using a scroll wheel on your Mac feel-wrong? You're not alone. 在Mac上使用滚轮是否感觉--不对? 你 ...

  8. HTML 鼠标绑定滚动条,js鼠标滑轮滚动事件绑定(兼容主流浏览器)

    今天尝试写基于jquery的滚动条,遇到了滚轮事件的兼容性问题,在firefox下和在IE下以及其它浏览器下,监听的事件有区别,查了下相关资料总结一下不同浏览器下鼠标滚轮事件兼容性的处理方式: 在 f ...

  9. 鼠标滑轮滚动事件(记录下以后用到好找)

    //兼容性写法,该函数也是网上别人写的,不过找不到出处了,蛮好的,所有我也没有必要修改了 //判断鼠标滚轮滚动方向 if (window.addEventListener)//FF,火狐浏览器会识别该 ...

  10. 同一个按钮绑定多个事件_带你走进JavaScript世界系列——事件处理程序之 IE 事件处理...

    IE 事件处理程序 IE 实现了与 DOM 中类似的两个方法:attachEvent() 和 detachEvent() .这两个方法接收相同的两个参数:事件处理程序名称和事件处理程序函数.通过 at ...

最新文章

  1. 2.算法-程序的灵魂
  2. 多线程——实现Callable接口
  3. centos 下postgres源码安装
  4. 什么代码才是线程安全的
  5. #{} vs ${}
  6. 电话自动拨号在电脑上自动拨打
  7. c语言 1 2 3传统流程图,1.3.2 用流程图描述算法
  8. Zotero——下载知网PDF文件
  9. 【JavaWeb - 网页编程】三 jQuery 类库
  10. debug命令(debug命令的使用)
  11. node-opcua的使用 --- [1] 简单server
  12. JAVA程序把大写转换小写_Java程序将字符串转换为小写和大写。
  13. python类型转换方法_详解python中的类型转换方法
  14. 熊猫烧香超级搞笑广告版本
  15. 《统计学》笔记:第11章 一元线性回归
  16. 影院活动管理系统--项目设计阶段.
  17. 为什么培训机构出身的程序员,不敢告诉任何人?
  18. Error: Cannot find module ‘node-sass‘ Require stack:
  19. php对联广告,纯DIV/CSS对联漂浮广告代码(无JS)
  20. linux运行QQ,微信,企业微信 (非deepin)

热门文章

  1. 【小小决斗】我看你不顺眼很久了,快来和我一决高下!
  2. 微信无法拍摄小视频问题
  3. 春节我的世界Java会降价吗,元旦春节期间,猪肉会降价吗?根据官方消息,国家已经出手了...
  4. 第二章命题逻辑等值演算2.1
  5. hive的wui访问hive
  6. python编写阅卷软件_利用Python开发智能阅卷系统
  7. Windows安装Centos7双系统后Windows启动项消失
  8. 我的世界服务器为什么一直显示游戏运行中,我的世界中国版进不去怎么办?游戏进不了原因及解决方法...
  9. 尤克里里常用和旋及节奏型
  10. Kafka API的运用(Consumer API)