一、鼠标拖拽移动图片

package cn.util;import java.io.File;
import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.geometry.Point2D;
import javafx.geometry.Rectangle2D;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.input.MouseDragEvent;
import javafx.scene.input.ScrollEvent;
import javafx.scene.layout.Pane;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;/**** @author MK*/
public class ImageApplication extends Application {Point2D dragDistance = null;public void start(Stage primaryStage) {ImageView imageView = new ImageView();String file = new File("picture1.png").toURI().toString();System.out.println(file);Image image = new Image(file);imageView.setImage(image);final double w = image.getWidth();final double h = image.getHeight();final double max = Math.max(w, h);final int width = (int) (500 * w / max);final int heigth = (int) (500 * h / max);imageView.setFitHeight(heigth);imageView.setFitWidth(width);Pane pane = new Pane();StackPane stackPane = new StackPane(pane);Scene scene = new Scene(stackPane, 700, 800);pane.getChildren().add(imageView);pane.heightProperty().addListener(new ChangeListener<Number>() {@Overridepublic void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {imageView.setY((newValue.doubleValue() - imageView.getFitHeight()) / 2);}});pane.widthProperty().addListener(new ChangeListener<Number>() {@Overridepublic void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {imageView.setX((newValue.doubleValue() - imageView.getFitWidth()) / 2);}});stackPane.addEventFilter(MouseDragEvent.MOUSE_PRESSED, event -> {dragDistance = new Point2D(event.getSceneX(), event.getSceneY());dragDistance = dragDistance.subtract(pane.localToScene(new Point2D(imageView.getX(), imageView.getY())));});stackPane.addEventFilter(MouseDragEvent.MOUSE_DRAGGED, event -> {if (event.isPrimaryButtonDown()) {Point2D px = new Point2D(event.getSceneX(), event.getSceneY());px = pane.sceneToLocal(px.subtract(dragDistance));imageView.setX(px.getX());imageView.setY(px.getY());}});primaryStage.setScene(scene);primaryStage.show();}public static void main(String[] args) {launch(args);}}

JavaFX鼠标拖拽移动图片相关推荐

  1. JavaFX鼠标拖拽事件

    一.节点原拖拽事件 //鼠标拖拽进入node node.setOnMouseDragEntered(event->{//do something });//鼠标拖拽退出node node.set ...

  2. pygame鼠标进行拖拽移动图片、缩放、以及按钮响应 案例

    pygame鼠标进行拖拽移动图片.缩放.以及按钮响应 案例 # -*- coding: UTF-8 -*- #!/usr/bin/env python3 # @Time : 2021.12 # @Au ...

  3. WPF 在image控件用鼠标拖拽出矩形

    今天有小伙伴问我一个问题,在image控件用鼠标拖拽出矩形,本文告诉大家如何使用鼠标画出矩形 做出来的效果先请大家看一下 最简单的方法是在 Down 的时候记录按下的点,在 移动的时候重新计算所在的宽 ...

  4. Win7/windows8/win 10系统下Photoshop不能直接拖拽打开图片的解决办法

    我们知道Adobe Photoshop打开图片的方式有很多种,其中有一种是我们经常用到的,那就是直接从资源管理器或者其他地方中直接把图片通过拖拽的方式拖到PS窗口中打开,在Win10系统中,使用PS的 ...

  5. 【计算机图形】制作能够利用鼠标拖拽实现360度旋转的3D人体模型flash文件

    前段时间,由于要对参加挑战杯的系统进行改善,老师要求我们在系统当中添加一个可旋转的3D人体模型,于是俺陷入了深深的思考当中.之前一直都没有接触过3D模型的制作,而且老师这回给的时间又特紧,当时那个急呀 ...

  6. html div 可鼠标滚动,js实现鼠标拖拽div左右滑动

    本文实例为大家分享了js鼠标拖拽div左右滑动的具体代码,供大家参考,具体内容如下 Title body{ position: relative; margin:0; padding:0; width ...

  7. 弹出框的鼠标拖拽事件

    几个与定位有关的概念: js: clientX/clientY属性:获得事件发生时鼠标指针在视口中的水平和垂直坐标. screenX/screenY属性:获取鼠标事件发生时鼠标光标相对于整个电脑屏幕的 ...

  8. 自动化测试之鼠标悬浮操作、双击、鼠标拖拽

    鼠标操作.封装在ActionChains中 -move_to_element -double_click 双击 -context_click right_click 右键 -drag_and_drop ...

  9. java鼠标左键按下后拖动实现多选_鼠标拖拽多选功能

    鼠标拖拽多选功能 *{ box-sizing:border-box; } ul{ width:500px; height:auto; margin:0; padding:20px; font-size ...

最新文章

  1. linux正则表达式BRE
  2. 关于:项“ConnectionString”已添加
  3. 《BOOST程序库完全开发指南》 第11章 函数与回调
  4. [ERR] 1227 - Access denied; you need (at least one of) the SUPER privilege
  5. 激光雷达和相机联合标定 之 开源代码和软件汇总 (2004-2021)
  6. redis原理解析与案例分享
  7. 【CCCC】L3-021 神坛 (30分)计算几何+求三角形面积(极角排序)
  8. 1121 Damn Single(25 分)
  9. VB 串口编程 开发心得
  10. 计算机cad制图软件有哪些,cad制图软件有哪些?
  11. 手机淘宝列表页面 的js调用展示
  12. QTcpSocket服务器多线程
  13. Python语音识别
  14. matplotlib命令与格式:系统字体与显示中文
  15. wince tfp telnet
  16. 独家|撒谎不眨眼的“女乔布斯”和她的帝国覆灭记
  17. 用HTML5写ZZULI官网(八)
  18. 关于Context的理解(转)
  19. 栈的压入、弹出序列(Java)
  20. 2022年数维杯国际大学生数学建模挑战赛C题如何利用大脑结构特征和认知行为特征诊断阿尔茨海默病解题过程

热门文章

  1. KBJ2510-ASEMI通用适配电磁炉整流桥KBJ2510
  2. PeopleSoft 后台更新密码
  3. Boost学习笔记(一)——Boost使用基础、内存管理
  4. 谈新IT背景下的CIO角色定位和专业知识体系构建
  5. VDI负载测试工具使用分享:Login VSI简介
  6. 首批5G手机2019上半年开始上市,但真正的竞争2020年上半年开始
  7. 蚁剑连接一句话木马演示
  8. 惯性测量单元--IMU
  9. 【声明】RUC自习助手APP(Android版)已上线,可下载
  10. 关于长按复制微信号和二维码的统计监测