javafx拖拽图片实现

news2025/4/6 15:38:41

效果

在这里插入图片描述

代码



package cn.juhe.zjsb.test;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.HBox;
import javafx.scene.paint.Color;
import javafx.stage.Stage;

public class DragAndDropImageExample extends Application {

    private HBox hbox;
    private final double boxWidth = 200;
    private final double boxHeight = 200;

    @Override
    public void start(Stage primaryStage) {
        AnchorPane anchorPane = new AnchorPane();
        Scene scene = new Scene(anchorPane, 400, 300);

        hbox = new HBox();
        hbox.setPrefSize(boxWidth, boxHeight);
        hbox.setStyle("-fx-border-width: 2px; -fx-border-color: transparent;");
        hbox.setOnDragOver(event -> {
            if (event.getDragboard().hasFiles() || event.getDragboard().hasUrl()) {
                event.acceptTransferModes(javafx.scene.input.TransferMode.COPY);
                hbox.setStyle("-fx-border-width: 2px; -fx-border-color: red;");
            }
            event.consume();
        });

        hbox.setOnDragDropped(event -> {
            if (event.getDragboard().hasFiles()) {
                Image image = new Image("file:" + event.getDragboard().getFiles().get(0).getAbsolutePath());
                updateImageView(image);
            } else if (event.getDragboard().hasUrl()) {
                Image image = new Image(event.getDragboard().getUrl());
                updateImageView(image);
            }
            hbox.setStyle("-fx-border-width: 2px; -fx-border-color: transparent;");
            event.setDropCompleted(true);
            event.consume();
        });

        anchorPane.getChildren().add(hbox);

        primaryStage.setScene(scene);
        primaryStage.setTitle("Drag and Drop Image Example");
        primaryStage.show();
    }

    private void updateImageView(Image image) {
        ImageView imageView = new ImageView(image);
        double imgWidth = image.getWidth();
        double imgHeight = image.getHeight();
        double scaleFactor = Math.min(boxWidth / imgWidth, boxHeight / imgHeight);
        imageView.setFitWidth(imgWidth * scaleFactor);
        imageView.setFitHeight(imgHeight * scaleFactor);
        hbox.getChildren().clear();
        hbox.getChildren().add(imageView);
    }

    public static void main(String[] args) {
        launch(args);
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/792874.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

jmeter接口自动化测试工具在企业开展实际的操作

在企业使用jmeter开展实际的接口自动化测试工具,建议按如下操作流程, 可以使整个接口测试过程更规范,更有效。 接口自动化的流程: 1、获取到接口文档:swagger、word、excel ... 2、熟悉接口文档然后设计测试用例&am…

SAFe工具,SAFe规模化敏捷工具,SAFe实施流程,SAFe框架管理工具

​Leangoo领歌敏捷工具覆盖了敏捷项目研发全流程,包括小型团队敏捷开发,Scrum of Scrums大规模敏捷。 随着SAFe的越来越普及,Leangoo本次上线提供了完整的SAFe框架功能,包括:Program Backlog,PI规划&#…

Linux相关指令(上)

常见指令: 1 pwd:查看用户当前所在目录 以下面的路径为例: 2 ls:对于目录,该命令列出该目录下的所有子目录与文件。 对于文件,将列出文件名以及其他信息 ls-l(or ll):列…

插槽slot复习

1.认识插槽 ◼ 在开发中,我们会经常封装一个个可复用的组件:  前面我们会通过props传递给组件一些数据,让组件来进行展示;  但是为了让这个组件具备更强的通用性,我们不能将组件中的内容限制为固定的div、span等等…

学生公寓报修管理系统的设计与实现(论文+源码)_kaic

摘 要 随着科技的发展,信息化的管理手段早以在人们生活的各个方面取代了传统的管理手段,以先进管理理念为基础的现代化信息管理系统已经成为了许多机构的必备工具。在如今大学的校园里,有着许许多多的信息化管理系统,如图书管理系…

面试官:Redis 为什么变慢了?怎么解决?

一、Redis为什么变慢了 二、Redis如何优化 三、Redis变慢了排查步骤 一、Redis为什么变慢了 1.Redis真的变慢了吗? 对 Redis 进行基准性能测试 例如,我的机器配置比较低,当延迟为 2ms 时,我就认为 Redis 变慢了,…

Qt : day2

1. #include "widget.h"Widget::Widget(QWidget *parent): QWidget(parent) {qDebug() << this->size(); //获取当前页面尺寸this->setFixedSize(500, 600); //设置固定尺寸this->setWindowTitle("聊天框"); //设置窗口标题thi…

快速批量处理,高效添加水印的软件推荐

辛迪&#xff1a;嘿&#xff0c;你听说过加水印技术吗&#xff1f; 杰克&#xff1a;当然啦&#xff01;那是一种在图像或视频上添加标识的技术&#xff0c;对吧&#xff1f; 辛迪&#xff1a;没错&#xff01;加水印技术可以在作品上添加标识、文字、图像等&#xff0c;以保…

Python实现HBA混合蝙蝠智能算法优化XGBoost回归模型(XGBRegressor算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 蝙蝠算法是2010年杨教授基于群体智能提出的启发式搜索算法&#xff0c;是一种搜索全局最优解的有效方法…

【计算机】磁盘基础知识

一、背景前言 今年2023年&#xff0c;已经是机械硬盘诞生的第67个年头了。作为存储数据的硬件设备&#xff0c;它的发展可谓历经了很多人的努力&#xff0c;在这个过程中也发现很多有意思的事情。通常在生活中&#xff0c;不太懂计算机的朋友们常把内存与硬盘的概念混淆&#…

怎么把图片压缩小一点?三招教会你压缩图片

在现如今的互联网时代&#xff0c;图片是我们日常生活中不可或缺的一部分&#xff0c;无论是在社交媒体上分享照片&#xff0c;还是在网站上发布图片&#xff0c;我们都希望图片能够加载得更快&#xff0c;占用更少的存储空间。因此&#xff0c;将图片压缩变得尤为重要&#xf…

C# 用队列实现栈

225 用队列实现栈 请你仅使用两个队列实现一个后入先出&#xff08;LIFO&#xff09;的栈&#xff0c;并支持普通栈的全部四种操作&#xff08;push、top、pop 和 empty&#xff09;。 实现 MyStack 类&#xff1a; void push(int x) 将元素 x 压入栈顶。 int pop() 移除并返…

Java训练四

目录 一、简易计算器 二、购买电影票 三、计算平均分 四、厘米与英寸互转 一、简易计算器 使用静态方法模拟一个只能进行两个数加、减、乘、除的建议计算器。 package haha; import java.util.Scanner; public class Dog{ public static double jia(double a,double b)…

大语言模型LLM

目录 一、语言模型的发展 语言模型&#xff08;Language Model&#xff0c;LM&#xff09;目标是建模自然语言的概率分布&#xff0c;具体目标是构建词序列w1,w2,...,wm的概率分布&#xff0c;即计算给定的词序列作为一个句子出现可能的大小P(w1w2...wm)。但联合概率P的参数量…

Consul 容器服务更新与发现

Consul 容器服务更新与发现/docker 安全/ssl证书管理 文章目录 Consul 容器服务更新与发现/docker 安全/ssl证书管理一、consul详解1.consul模式2.consul关键特性 二、consul部署1.实验部署2.实验步骤consul服务器registrator服务器consul-templateconsul 多节点 三、Docker安全…

TDesign 中后台系统搭建

目录 1 模板安装2 启动项目3 添加页面总结 一般如果希望开发小程序&#xff0c;是要给使用的用户提供一套中后台系统来管理数据的。现在中后台系统开源项目也比较多&#xff0c;本篇我们介绍一个腾讯开源的TDesign模板。 1 模板安装 先要在电脑里安装好nodejs&#xff0c;搜索…

Qt 第二讲 登录框完善,登录成功后,进入新的界面;新建工程文件,默认提供的代码注释信息;前两讲思维导图

一&#xff0c;代码完善 头文件 #ifndef ZUOYE_H #define ZUOYE_H#include <QWidget> #include <QDebug> #include <QIcon> #include <QPushButton> #include <QLineEdit> #include <QLabel> //#include <QTextToSpeech>QT_BEGIN_…

idea23.1 翻译配置

目录 一、插件 二、配置 2.1.插件配置 2.2.阿里账号 2.2.1.账号注册 2.2.2.获取权限 2.3.idea配置 一、插件 在idea的【Settings】中&#xff0c;找到插件中心【Plugins】&#xff0c;搜索【Translation】&#xff0c;可以看到这个插件下载量最大且评分最高&#x…

【部署】让你的电脑多出一个磁盘来用!使用SSHFS将远程服务器目录挂载到Windows本地,挂载并共享服务器资源

让你的电脑多出一个磁盘来用&#xff01;---使用SSHFS将远程服务器目录挂载到Windows本地 1. 方法原理介绍2.SSHFS-Win使用教程—实现远程服务器磁盘挂载本地 由于日常主要用 Windows 系统&#xff0c;每次都得 ssh 到服务器上进行取资源&#xff08;本地磁盘不富裕&#xff09…

点赞!远眺售后团队又获客户感谢信!

杭州远眺科技有限公司成立于2013年&#xff0c;是浙江大学软件工程学科成果转化基地&#xff0c;作为国内首家为智慧应用类行业提供软件开发工具、行业应用内容和技术赋能服务的高科技公司。远眺科技始终以客户为核心&#xff0c;不断完善“产品、内容、服务”的客户赋能体系&a…