首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Java中窗口拖动的事件

针对Java中窗口拖动的事件,可以采用以下方案:

  1. 定义一个鼠标按下事件(Mouse Down),当鼠标在窗口的指定区域按下时触发该事件。
  2. 定义一个鼠标移动事件(Mouse Move),当鼠标在窗口的指定区域移动时触发该事件。
  3. 定义一个鼠标释放事件(Mouse Up),当鼠标在窗口的指定区域释放时触发该事件。
  4. 在事件处理函数中,记录鼠标按下时的位置和窗口的当前大小。
  5. 在事件处理函数中,计算鼠标移动后的位置,并更新窗口的当前大小。
  6. 在事件处理函数中,判断鼠标是否在窗口的边界范围内,如果不在范围内,则取消拖动事件。
  7. 在事件处理函数中,判断鼠标是否在窗口的指定区域内,如果不在范围内,则取消拖动事件。
  8. 在事件处理函数中,判断鼠标是否已经释放,如果已经释放,则取消拖动事件。

以下是一个示例代码:

代码语言:java
复制
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class WindowDragListener extends MouseAdapter {
    @Override
    public void mousePressed(MouseEvent e) {
        // 记录鼠标按下时的位置
        int x = e.getX();
        int y = e.getY();
        // 记录窗口的当前大小
        JFrame frame = (JFrame) e.getSource();
        JPanel panel = (JPanel) frame.getContentPane();
        int width = panel.getWidth();
        int height = panel.getHeight();

        // 定义鼠标移动事件
        @Override
        public void mouseDragged(MouseEvent e) {
            // 计算鼠标移动后的位置
            int newX = e.getX();
            int newY = e.getY();
            // 更新窗口的当前大小
            panel.setLocation(newX, newY);
            panel.setSize(width - newX + x, height - newY + y);
        }
    }
}

该代码定义了一个 WindowDragListener 类,它继承自 MouseAdapter 类,并实现了 mousePressedmouseDraggedmouseReleased 三个方法。其中,mousePressed 方法用于记录鼠标按下时的位置和窗口的当前大小,mouseDragged 方法用于计算鼠标移动后的位置,并更新窗口的当前大小,mouseReleased 方法用于判断鼠标是否已经释放,如果已经释放,则取消拖动事件。

使用该代码,可以实现在 Java Swing 应用程序中拖动窗口。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android窗口Input事件接收

简述 窗口接收事件主要分为三步骤 : 窗口与InputManagerService建立连接 在InputManagerService初始化时候会创建InputReader、InputDispatcher...监听该文件事件 InputManagerService选择窗口 在InputDispatcher监听到InputReader事件后 , 会根据当前x、y来找到已经注册WindowHandle...接着根据WindowHandle找到对应InputChannel以及Connection 接着将MotionEvent对应二进制数据通过SocketFD发送给客户端窗口 窗口响应事件 在Activity.attach...与ViewGroup分发事件流程 窗口与InputManagerService建立连接 在ViewRootImpl.setView() public void setView(View view,...Socket发送给对应窗口 窗口响应事件 在session.addToDispaly函数调用后 , InputManagerService将InputChannel信息填充给对应Window public

3.6K40

javascript对点击事件拖动事件区分

由于是悬浮,那么就会考虑用户会出现哪几种可能操作,一个是直接点击,另外一种就是在屏幕上先拖动几下,然后再点击。 那么为了完美的实现这个需求,那么该怎么办呢?...最重要就是要区分点击事件拖动事件。 我们都知道,点击事件是被点击对象可看做是静止不动,而拖动事件对象很明显是移动。...那么思路就应该是先判断事件对象是否有移动现象, 但是由于不管是在点击事件拖动事件,其都有一个鼠标按下一个过程和一个松开过程,只不过拖动事件多了一个拖动动作。...那么完整思路应是这样: 第一:先写出鼠标按下函数; 第二:编写对象是否被拖动函数; 第三:判断对象是否相对原先位置产生了位移; 第四:编写鼠标松开之后代码; 完整代码如下: var timmerHandle...自己整理了一份2018最全面前端学习资料,从最基础HTML+CSS+JS到移动端HTML5到各种框架都有整理,送给每一位前端小伙伴,这里是小白聚集地,欢迎初学和进阶小伙伴!

4.9K30

Java事件处理基础实例:处理按钮点击+捕获窗口事件+改变观感

前言 对于图形用户界面的程序来说,事件处理是十分重要。要想实现用户界面,必须掌握Java事件处理基本方法。本章将讲解Java AWT事件模型工作机制,从中可以看到如何捕捉鼠标和键盘产生事件。...事件源有一些向其注册事件监听器方法。当某个事件源产生事件时候,事件源会向为事件注册所有事件监听器对象发送一个通告。 像Java这样面向对象语言,都将事件相关信息封装在一个事件对象。...在Java,所有的事件对象都最终派生于java.util.EventObject类。当然,每个事件类型还有子类,例如,ActionEvent和WindowEvent。...• String getClassName( ) 返回观感实现类名称。 实例:捕获窗口事件 并不是所有的事件处理都像按钮点击那样简单。下面这个例子就有点复杂,在第7章我们曾经简要介绍过。...java.awt.event.WindowEvent 1.1 • int getNewState( ) 1.4 • int getOldState( ) 1.4 返回窗口状态改变事件窗口新、旧状态。

3.3K30

如何监视 WPF 所有窗口,在所有窗口中订阅事件或者附加 UI

由于 WPF 路由事件(主要是隧道和冒泡)存在,我们很容易能够通过只监听窗口某些事件使得整个窗口中所有控件发生事件都被监听到。然而,如果我们希望监听是整个应用程序中所有的事件呢?...路由事件路由可并不会跨越窗口边界呀? 本文将介绍我编写应用程序窗口监视器,来监听整个应用程序中所有窗口路由事件。这样方法可以用来无时无刻监视 WPF 程序各种状态。...于是,我们只需要遍历 Windows 集合便可以获得应用程序所有窗口,然后对每一个窗口监听需要路由事件。...于是,一开始时候,我们可以监听一些窗口激活事件。如果执行这段初始化代码时候没有任何窗口是激活状态,那么就监听所有窗口激活事件;如果有一个窗口是激活,那么就监听这个窗口取消激活事件。...} 在 Window_Activated 和 Window_Deactivated 事件,我们主要也是在做初始化。

34440

WPF 获取全局所有窗口创建显示事件 监控窗口打开

这是一个开发时辅助机制,用来让开发者不要随便弹出窗口,我又好奇这个监控模块是如何监控到我弹出一个窗口,学习了监控模块机制,就写了这个博客 在 WPF 里面,可以通过 EventManager 监听全局路由事件...,刚好窗口创建显示时,将会触发一些路径事件。...于是就可以进行监控窗口创建显示 监听窗口 SizeChangedEvent 路由事件是比较靠谱方式,这个有一点点违反开发者想法,开发者默认想是使用 LoadedEvent 事件。...e) { // 所有窗口都会触发 } 窗口创建时候,将会进入 Window_SizeChanged 事件。...也可以在事件里面对每个窗口注入一些有趣逻辑,或者是监听窗口各个事件,输出更多日志,让开发者可以通过日志了解到当前有哪些窗口依然还在显示 这是另一位大佬写代码,请看 https://gist.github.com

1.9K50

2,StructuredStreaming事件时间和窗口操作

推荐阅读:1,StructuredStreaming简介 使用Structured Streaming基于事件时间滑动窗口聚合操作是很简单,很像分组聚合。...在一个分组聚合操作,聚合值被唯一保存在用户指定。在基于窗口聚合情况下,对于行事件时间每个窗口,维护聚合值。...如前面的例子,我们运行wordcount操作,希望以10min窗口计算,每五分钟滑动一次窗口。...12:00 - 12:10意思是在12:00之后到达12:10之前到达数据,比如一个单词在12:07收到。这个单词会影响12:00 - 12:10, 12:05 - 12:15两个窗口。...import org.apache.spark.sql.streaming.Trigger import java.sql.Timestamp import org.apache.spark.sql.functions

1.1K40

Java AWT 图形界面编程】事件处理机制 ③ ( AWT 中常见事件事件监听器 | 低级事件 | 组件事件 | 窗口事件 | 鼠标事件 | 高级事件 | 动作事件 | 事件监听器 )

文章目录 一、AWT 中常见事件 1、低级事件 2、高级事件 二、AWT 中常见事件监听器 一、AWT 中常见事件 ---- AWT 事件分为两大类 , 低级事件 和 高级事件 ; 低级事件...: 基于某个特定基本动作事件 , 如 点击 , 拖动 , 获取焦点 , 失去焦点 等固定简单操作 ; 高级事件 : 不基于某个特定事件 , 而是 根据 功能具体含义 定义事件 ; 1、低级事件...容器 添加 / 删除 组件时触发该事件 ; 窗口事件 : WindowEvent , 窗口 打开 , 关闭 , 最小化 , 最大化 , 获取焦点 , 失去焦点 时触发事件 ; 焦点事件 : FocusEvent..., 拖动拖动滑块 调节数值 , 触发该事件 ; 选项事件 : ItemEvent , 选中某个组件时触发该事件 , 如 Checkbox 复选框 ; 文本事件 : TextEvent , 文本框中文本发生改变触发该事件..., 监听 组件 尺寸变化 , 位置变化 , 可见/隐藏 属性变化 ; 容器事件监听器 : ContainerListener , 监听 Container 容器 添加 / 删除 组件 ; 窗口事件监听器

1.7K20

Java AWT 图形界面编程】Canvas 绘制超大图片 ( 使用鼠标拖动查看全图 | 设置 JFrame 窗口自动关闭 | 获取并绘制图片 | 鼠标拖动计算位移 | 画布偏移 )

一、Canvas 绘制超大图片要点 ---- 1、设置 JFrame 窗口自动关闭 创建 JFrame 窗口后 , 通过调用 JFrame#setDefaultCloseOperation 可以设置窗口自动关闭...鼠标按下时 , 记录按下位置 , 保存到 startX 和 startY 变量 , 这两个变量每次鼠标按下都会更新 ; // 为组件设置鼠标监听事件 addMouseListener...() { // 鼠标拖动事件 public void mouseDragged(MouseEvent e) { // 统计本次鼠标移动相对值...startX += dx; startY += dy; } }); 4、画布偏移 初始时 , 画布偏移为 0 , 但是 在鼠标不断拖动过程...窗口设置可见 frame.setVisible(true); } } 执行结果 : 初始状态 : 鼠标向右下拖动 : 鼠标向左上拖动 :

1.3K20

java事件总线应用场景是什么?事件总线是什么?

事件总线模式就是一种能够传递信息接收信息模式,在java也可以使用事件总线,那么java事件总线应用场景是什么呢?下面为大家简单介绍java事件总线应用场景是什么。...java事件总线应用场景是什么 如果在使用Java过程,发现有繁多信息需要处理,且并不知道哪些信息是重要的话,就可以使用事件总线。...因为事件总线可以对所接受到信息进行分类,并按照正确业务逻辑进行处理,这样操作者就可以分清信息主次重要性。...事件总线是什么 事件总线有一个比较熟悉名字,那就是观察者模式,通过这种模式可以集中性处理事件,并允许不同组件之间彼此沟通信息,而又不会产生依赖性。...上面为大家简单介绍了java事件总线应用场景,由于事件总线设计模式具有其自身优势性,所以不管是在Java还是在安卓开发,都有比较广泛使用程度。

55540

使用Rx Framework实现XAML物体拖动

Rx把事件驱动UI与LINQ、并发性和异步调用结合起来。 Rx尝试解决从基于事件UI异步访问数据问题。...标准迭代器模式以及它基本接口IEnumerable和IEnumerator对于异步操作是不足够,因此Rx通过引入观察者模式来解决这个问题,这个模式包含两个主要接口,IObservable和IObserver...不是客户端一步一步地迭代数据集合,而是集合把数据作为异步调用结果推送给客户端,终结了调用循环。...接下来我们运用RxUI事件订阅功能来实现在WPF/Silverlight拖动元素功能函数: 1 private void EnableDragging(FrameworkElement element...当然这只是Rx框架一小部分,想要了解更多内容请上官方开发者中心看看。

69320

Java AWT 图形界面编程】事件处理机制 ② ( Frame 窗口事件监听器 WindowListener | 代码示例 )

一、Frame 窗口事件监听器 WindowListener 在 AWT , 为 Frame 窗口 添加 窗口事件监听器 WindowListener , 可以监听窗口操作 , 如 : 窗口显示...窗口失去焦点 WindowListener#windowDeactivated(WindowEvent e) Frame 窗口事件监听器 WindowListener 原型 : 可以阅读下面的原型文档..., 理解窗口各种监听 ; /** * The listener interface for receiving window events...owner of the focused * Window. */ public void windowDeactivated(WindowEvent e); } 二、Frame 窗口事件监听器...WindowListener 代码示例 ---- 代码示例 : import java.awt.*; import java.awt.event.WindowEvent; import java.awt.event.WindowListener

46310

selecpoll读写事件和epoll读写事件

在Linux网络编程,常常使用select和poll来做事件触发,监听socket读写状态,然后进行读写操作。...现在新linux内核,增加了epoll事件触发机制,具有更高性能和更好设计理念,可以用它来完全代替select和poll。...(引自《使用EPOLL进行网络编程》,这篇文章主要是进行一个读写事件总结,不会过多地讨论epoll,而且本人也是初学) 一、select/poll读写事件 1.下列四个条件任何一个满足时,...) 写事件发生 1、连接建立成功后可写(accept获取套接字或者客户端建立连接套接字) 2、缓冲区可写 通过上面的分别阐述,epoll读写事件区分要比select/poll清晰一些,epoll...还有很多优点和细节,在以后文章再介绍

3K40

pandas窗口处理函数

滑动窗口处理方式在实际数据分析中比较常用,在生物信息,很多算法也是通过滑动窗口来实现,比如经典质控软件Trimmomatic, 从序列5'端第一个碱基开始,计算每个滑动窗口碱基质量平均值...,当滑动窗后平均碱基质量值小于给定阈值时,去除该窗口以及之后剩余碱基,以此达到去除低质量碱基目的。...在pandas,提供了一系列按照窗口来处理序列函数。....count() 0 1.0 1 2.0 2 2.0 3 1.0 4 1.0 dtype: float64 window参数指定窗口大小,在rolling系列函数窗口计算规则并不是常规向后延伸...以上述代码为例,count函数用于计算每个窗口内非NaN值个数,对于第一个元素1,再往前就是下标-1了,序列不存在这个元素,所以该窗口有效数值就是1。

2K10

Spring事件

事件 2.1. Spring内置事件 2.2. 自定义事件 3. 监听器 3.1. 实现ApplicationListener接口 3.2. 使用@EventListener注解 4....自定义事件多播器 7. 源码解析 简介 学过编程语言肯定知道事件,在JS事件,Android事件,大多是鼠标点击,键盘事件,手指滑动事件等等。...既然有了事件,自然少不了事件监听器,事件分发器等,后续会详细介绍 事件 Spring内置事件 ContextStartedEvent:容器启动时候触发(start方法) ContextRefreshedEvent...(close方法) 自定义事件 Spring自定义事件只需要继承ApplicationEvent即可完成一个自定义Spring事件 /** * 自定义事件,继承ApplicationEvent...简单事件多播器就是一个管理事件监听器并且广播事件【根据指定事件调用指定监听器而已】 spring两个实现类分别为AbstractApplicationEventMulticaster、SimpleApplicationEventMulticaster

1.3K20

8-Flink窗口

翻滚窗口能将数据流切分成不重叠窗口,每一个事件只能属于一个窗口。 // 用户id和购买数量 stream val counts: DataStream[(Int, Int)] = ......这种窗口我们称为滑动时间窗口(Sliding Time Window)。在滑窗,一个元素可以对应多个窗口。...window of 100 elements size .countWindow(100) // compute the buyCnt sum .sum(1) Session Window 在这种用户交互事件...,我们首先想到是将事件聚合到会话窗口中(一段用户持续活跃周期),由非活跃间隙分隔开。...所有代码,我放在了我公众号,回复Flink可以下载 海量【java和大数据面试题+视频资料】整理在公众号,关注后可以下载~ 更多大数据技术欢迎和作者一起探讨~

1.6K20
领券