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

如何在JFrame中获取对其上出现MouseEvent的元素的引用

在JFrame中获取对其上出现MouseEvent的元素的引用,可以通过以下步骤实现:

  1. 首先,需要为JFrame添加一个MouseListener,用于监听鼠标事件。可以使用JFrame的addMouseListener方法来添加MouseListener。
  2. 在MouseListener中,可以通过MouseEvent的getX和getY方法获取鼠标点击的坐标。
  3. 接下来,可以使用SwingUtilities类的getDeepestComponentAt方法来获取鼠标点击位置的组件。该方法会返回位于指定坐标的最底层的组件。
  4. 最后,可以将返回的组件引用保存起来,以便后续使用。

以下是一个示例代码:

代码语言:java
复制
import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

public class MainFrame extends JFrame {
    public MainFrame() {
        // 设置JFrame的属性和布局
        setTitle("获取鼠标点击元素的引用");
        setSize(400, 300);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLayout(new FlowLayout());

        // 添加MouseListener
        addMouseListener(new MouseListener() {
            @Override
            public void mouseClicked(MouseEvent e) {
                // 获取鼠标点击的坐标
                int x = e.getX();
                int y = e.getY();

                // 获取鼠标点击位置的组件
                Component component = SwingUtilities.getDeepestComponentAt(getContentPane(), x, y);

                // 打印组件的引用
                System.out.println("Clicked Component: " + component);
            }

            @Override
            public void mousePressed(MouseEvent e) {}

            @Override
            public void mouseReleased(MouseEvent e) {}

            @Override
            public void mouseEntered(MouseEvent e) {}

            @Override
            public void mouseExited(MouseEvent e) {}
        });
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> {
            MainFrame frame = new MainFrame();
            frame.setVisible(true);
        });
    }
}

在上述示例中,当鼠标在JFrame上点击时,会打印出鼠标点击位置的组件的引用。你可以根据实际需求,对获取到的组件进行进一步操作。

腾讯云相关产品和产品介绍链接地址:

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

相关·内容

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

一、Canvas 绘制超大图片要点 ---- 1、设置 JFrame 窗口自动关闭 创建 JFrame 窗口后 , 通过调用 JFrame#setDefaultCloseOperation 可以设置窗口自动关闭...关闭窗口并退出应用 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 2、获取并绘制图片 在 AWT , 使用 Toolkit.getDefaultToolkit...().getImage 函数 , 获取 Image 图片对象 ; // 获取图片 Image image = Toolkit.getDefaultToolkit().getImage...() { public void mousePressed(MouseEvent e) { // 记录鼠标按下时坐标...( startX , startY ) 位置 差值 , 将 该差值累加到 ( startX , startY ) 坐标 ; 计算一个 Canvas 画布偏移量 ( offsetX , offsetY

1.3K20

设计模式之——享元模式 Flyweight

设想一下在选课高峰期,1 秒钟有 1000 人选课,程序在内存同时创建 1000 个对象,服务器压力过大肯定卡啊,还有可能出现 内存溢出 现象。...享元模式主要优点是:相同对象只要保存一份,这降低了系统对象数量,从而降低了系统细粒度对象给内存带来压力。 定义 享元模式定义提出了两个要求,细粒度 和 共享对象 。...内部状态指对象共享出来信息,存储在享元信息内部,并且不会随环境改变而改变,本例任课老师和课程名称; 外部状态指对象得以依赖一个标记,随环境改变而改变,不可共享,本例学生姓名。 ?...(String type) 方法; 客户类(Chessboard)利用 Graphics 组件在框架窗体绘制一个棋盘,并实现 mouseClicked(MouseEvent e) 事件处理方法,该方法根据用户选择从享元工厂获取白子或者黑子并落在棋盘上...扩展 在前面介绍享元模式结构图通常包含可以共享部分和不可以共享部分。 在实际使用过程,有时候会稍加改变,即存在两种特殊享元模式:单纯享元模式 和 复合享元模式。

38610

【干货】20K以上高薪Java必掌握基础知识点(二)

93、javax.swing包 JFrame 类或子类所创建一个对象就是一个窗口。...97、JavaJFrame setTitle 方法是用来设置窗口名字。 98、JFrame类创建对象是一个窗口容器,它默认布局是 BorderLayout 布局。...104、GridLayout 是使用较多布局编辑器,基本布局策略是把容器划分成若干行乘若干列网格区域,组件就位于这些划分出来小格。...108、Java能够产生事件对象都可以成为事件源 ,文本框、按钮、键盘等。 109、Java事件源发生事件时,监视器 就自动调用执行被类实现某个接口方法。...116、鼠标事件类MouseEvent方法getSource()是获取发生鼠标事件事件源 。

1.4K71

【Java AWT 图形界面编程】使用鼠标滚轮放大缩小 Canvas 画布 ( 鼠标滚轮事件监听器 MouseWheelListener )

, 调用 addMouseWheelListener 函数 , 添加 鼠标滚轮监听器 MouseWheelListener , 实现该监听器 void mouseWheelMoved(MouseWheelEvent...e) 函数 , 当鼠标滚轮滑动时 , 通过 MouseWheelEvent 对象 , 获取鼠标滚轮滑动方向 , 向上滑动时 , 放大画布 , 画布增加 10% ; 向下滑动时 , 缩小画布 , 画布缩小...( 使用鼠标拖动查看全图 | 设置 JFrame 窗口自动关闭 | 获取并绘制图片 | 鼠标拖动计算位移 | 画布偏移 ) 博客 , 绘制了超大图像 , 可以使用鼠标拖动 , 这里在上述基础 ,...g2.scale(scale, scale); // 拖动画布 g2.translate(offsetX, offsetY); // 获取图片...窗口 JFrame frame = new JFrame("Large Canvas"); // 设置窗口关闭行为 点击右上角关闭按钮 关闭窗口并退出应用

2.2K30

Java项目实战之天天酷跑

、动态玩家、五种障碍物持续出现、玩家和障碍物碰撞、 暂停、继续功能、玩家移动功能 5、结束界面 获取玩家得分、跑酷距离。...阻塞:当线程需要获得对象内置锁,而该锁正在被其他线程拥有。 等待:当线程等待其他线程通知调度表可以运行时。 计时等待:对于一些含有时间参数方法,Thread类sleep() 。...以便在面板类障碍物进行操作。 障碍物二:宠物 与其称之障碍物,不如说它是个跟着玩家小跟班。 ? ?...,功能如下: 跑酷距离、获取玩家得分。...通过在Person类添加get、set方法,获取数据。 ? 2、获取玩家得分 玩家与金币碰撞得分即为图中表现分,在GamePanel 获取。 ?

2.4K20

太完整了!三万字Java项目实战之天天酷跑

、动态玩家、五种障碍物持续出现、玩家和障碍物碰撞、 暂停、继续功能、玩家移动功能 5、结束界面 获取玩家得分、跑酷距离。...阻塞:当线程需要获得对象内置锁,而该锁正在被其他线程拥有。 等待:当线程等待其他线程通知调度表可以运行时。 计时等待:对于一些含有时间参数方法,Thread类sleep() 。...以便在面板类障碍物进行操作。 障碍物二:宠物 与其称之障碍物,不如说它是个跟着玩家小跟班。 ? ?...,功能如下: 跑酷距离、获取玩家得分。...通过在Person类添加get、set方法,获取数据。 ? 2、获取玩家得分 玩家与金币碰撞得分即为图中表现分,在GamePanel 获取。 ?

1.7K21

【Java AWT 图形界面编程】使用小键盘按键缩放 Canvas 画布绘制背景图像 ( 键盘按键监听 + 绘制超大图像 + 鼠标拖动 + 鼠标滚轮缩放 + 以当前鼠标指针位置为缩放中心 示例 )

一、键盘按键监听 - 要点分析 ---- 如果要为 Java AWT 界面编程应用设置键盘按键监听 , 必须为 Frame / JFrame 窗口设置键盘监听 , 为组件设置是无效 ; 下面是设置键盘监听核心代码...( 使用鼠标拖动查看全图 | 设置 JFrame 窗口自动关闭 | 获取并绘制图片 | 鼠标拖动计算位移 | 画布偏移 ) 博客 , 绘制了超大图像 , 可以使用鼠标拖动 ; 在 【Java AWT...图形界面编程】使用鼠标滚轮放大缩小 Canvas 画布 ( 鼠标滚轮事件监听器 MouseWheelListener ) 博客 , 新增鼠标滚轮缩放画布示例 , 但是使用鼠标拖动时 , 拖动效果也随之缩放..., 缩小画布后 , 移动鼠标 , 移动距离对应缩放效果也随之缩小 ; 在 【Java AWT 图形界面编程】使用鼠标滚轮放大缩小 Canvas 画布绘制背景图像 ( 鼠标滚轮事件监听器 MouseWheelListener...| Canvas 绘制图像并设置图像大小 ) 博客 , 使用缩放背景图像方式 , 实现缩放效果 , 并同时福袋鼠标指针拖拽效果 ; 本博客实现案例 , 在上面的基础 , 添加了鼠标滚轮缩放中心点设置为当前鼠标中心点

1.8K20

不敢相信,居然用Java写了个“天天酷跑”!

、动态玩家、五种障碍物持续出现、玩家和障碍物碰撞、 暂停、继续功能、玩家移动功能  5、结束界面  获取玩家得分、跑酷距离。...阻塞:当线程需要获得对象内置锁,而该锁正在被其他线程拥有。 等待:当线程等待其他线程通知调度表可以运行时。 计时等待:对于一些含有时间参数方法,Thread类sleep() 。 ...以便在面板类障碍物进行操作。 障碍物二:宠物 与其称之障碍物,不如说它是个跟着玩家小跟班。...,功能如下: 跑酷距离、获取玩家得分。 ...通过在Person类添加get、set方法,获取数据。 二、获取玩家得分 玩家与金币碰撞得分即为图中表现分,在GamePanel 获取

1.6K30

用Java实现天天酷跑(附源码),这个真的有点强了!

、动态玩家、五种障碍物持续出现、玩家和障碍物碰撞、 暂停、继续功能、玩家移动功能 5、结束界面 获取玩家得分、跑酷距离。...阻塞:当线程需要获得对象内置锁,而该锁正在被其他线程拥有。 等待:当线程等待其他线程通知调度表可以运行时。 计时等待:对于一些含有时间参数方法,Thread类sleep() 。...以便在面板类障碍物进行操作。 障碍物二:宠物 与其称之障碍物,不如说它是个跟着玩家小跟班。 ? ?...,功能如下: 跑酷距离、获取玩家得分。...通过在Person类添加get、set方法,获取数据。 ? 2、获取玩家得分 玩家与金币碰撞得分即为图中表现分,在GamePanel 获取。 ?

2.2K30

大佬带路,用Java实现天天酷跑(附源码),网友:这也太TM屌了~

、动态玩家、五种障碍物持续出现、玩家和障碍物碰撞、 暂停、继续功能、玩家移动功能 5、结束界面 获取玩家得分、跑酷距离。...阻塞:当线程需要获得对象内置锁,而该锁正在被其他线程拥有。 等待:当线程等待其他线程通知调度表可以运行时。 计时等待:对于一些含有时间参数方法,Thread类sleep() 。...以便在面板类障碍物进行操作。 障碍物二:宠物 与其称之障碍物,不如说它是个跟着玩家小跟班。 ? ?...,功能如下: 跑酷距离、获取玩家得分。...通过在Person类添加get、set方法,获取数据。 ? 2、获取玩家得分 玩家与金币碰撞得分即为图中表现分,在GamePanel 获取。 ?

1.4K20

Java项目实战之天天酷跑

、动态玩家、五种障碍物持续出现、玩家和障碍物碰撞、 暂停、继续功能、玩家移动功能 5、结束界面 获取玩家得分、跑酷距离。...阻塞:当线程需要获得对象内置锁,而该锁正在被其他线程拥有。 等待:当线程等待其他线程通知调度表可以运行时。 计时等待:对于一些含有时间参数方法,Thread类sleep() 。...以便在面板类障碍物进行操作。 障碍物二:宠物 与其称之障碍物,不如说它是个跟着玩家小跟班。 ? ?...,功能如下: 跑酷距离、获取玩家得分。...通过在Person类添加get、set方法,获取数据。 ? 2、获取玩家得分 玩家与金币碰撞得分即为图中表现分,在GamePanel 获取。 ?

2.4K20

【Java AWT 图形界面编程】使用鼠标滚轮缩放 Canvas 画布绘制背景图像 ( 绘制超大图像 + 鼠标拖动 + 鼠标滚轮缩放 + 以当前鼠标指针位置为缩放中心 示例 )

一、鼠标滚轮缩放中心点设置为当前鼠标中心点 - 要点分析 ---- 鼠标指针指向界面 Canvas 画布某个位置 , Canvas 画布绘制着一张超大图片 , 以该位置为中心 , 滑动鼠标滚轮时进行缩放...; 使用鼠标滚轮缩放后 , 在 Canvas 绘制图片尺寸肯定是放大或者缩小了 , 尺寸发生了改变 ; 图片缩放时 , 鼠标指针指向一个位置 , 该位置对应着一个当前 Canvas 画布 x...记录是鼠标指针指向界面 Camvas 画布坐标位置 ; pointer_ratio_x 和 pointer_ratio_y 记录是 鼠标指针指向位置对应图片中坐标位置比例 ; public...; 在鼠标滚轮事件 MouseWheelEvent , 可以直接通过调用 e.getX(), e.getY() 获取到当前 鼠标指针 在 Canvas 画布坐标 ; 根据该 Canvas 坐标...在鼠标滚轮缩放完成后 , 再根据鼠标指针指向位置和比例 , 结合图片缩放后尺寸 , 重新计算画布偏移位置 , 以达到鼠标指向图片元素位置基本保持不变目的 ; /** * 计算新比例

2.7K10

如果用java swing编写一个五子棋(人人对战)

一.前言 刚学习java,一次写了一个姓名随机抽取器,点击查看,参加了原力计划,被小编推荐到了首页,也是第一次在首页看到自己写东西,当时看到那一刻实实在在很开心,其实我们好多人学习东西,恰恰就需要那么一点点鼓励和被重视...,所以我一直认为编写综合程序,自己技术有进一步提示。...在上次写完随机抽取器,有人给我留言,说如果添加了抽取过程可以显示动态名字就更好,后来我也认真想了想,俗话说,始于颜值,,,颜值即正义,于是在下手码代码前,我有了经验,我用PS认认真真的把我需要资源都做好了...e) { } public void mouseClicked(MouseEvent e) { //获取鼠标单击事件 ,当鼠标单击时,获取坐标 if(boonum==true...每文一句:目标的坚定是性格中最必要力量源泉之一,也是成功利器之一。没有它,天才也会在矛盾无定迷径徒劳无功。

1.2K51

天天酷跑,如何用 Java 来实现?(附源码)

、动态玩家、五种障碍物持续出现、玩家和障碍物碰撞、 暂停、继续功能、玩家移动功能 5、结束界面 获取玩家得分、跑酷距离。...阻塞:当线程需要获得对象内置锁,而该锁正在被其他线程拥有。 等待:当线程等待其他线程通知调度表可以运行时。 计时等待:对于一些含有时间参数方法,Thread类sleep() 。...以便在面板类障碍物进行操作。 障碍物二:宠物 与其称之障碍物,不如说它是个跟着玩家小跟班。 public class Barrs_2{ // 宠物!...,功能如下: 跑酷距离、获取玩家得分。...通过在Person类添加get、set方法,获取数据。 2、获取玩家得分 玩家与金币碰撞得分即为图中表现分,在GamePanel 获取

1.4K30

在 Vue3 实现飘逸元素拖拽

元素位置和移动 在实现元素拖拽我们使用 mouse 事件,在 mouse 事件回调函数可以得到当前事件发生时元素位置,对应属性是 MouseEvent clientX 和 clientY...选择 Vuejs 原因就是因为是 MVVM 型框架,我们关注点在声明,内部运转机制有框架负责,所以在下面的事件处理上就只需要在对应事件中去更新一开始声明三组坐标就可以了。...- 指针在被拖拽元素位置得到被拖拽元素左上角距离页面左上角距离,并更新到 elementPosition: const onMousemove = (event: MouseEvent) =>...document 移除在 onMousemove 时注册两个事件,要注意是移除事件要是同一个事件,也就是引用一致事件,推荐将对应处理事件赋值给一个变量使用,最后可以在拖拽结束后还原被拖拽元素位置...,在本次案例需要认真思考对应几个坐标和移动时坐标如何更新,事件使用要成对出现,如何在这个拖拽 Icon 增加点击事件时还需要多做一些处理,有答案朋友可以留下你想法~

1.8K20

漫谈可视化Prefuse(四)---被玩坏Prefuse API

上篇《漫谈可视化Prefuse(三)---Prefuse API数据结构阅读有感》主要介绍了可视化工具Prefuse API主要解读是prefuse.data包主要接口,并利用《漫谈可视化Prefuse...那今天我们主要讲讲Prefuse比较常用包以及如何使用这些包做出自己想要展示效果:   Demo1.解决图形元素形状单一化问题——DataShapeAction使用   Prefuse对于节点形状默认是使用...new InGroupPredicate("graph.edges"), edgeRenderer); 这里采用EdgeRenderer边渲染器,将边渲染为曲线,并统一应用到组“graph.edges”元素...拿Demo2图形来说,处在中间节点可以不收节点控制(无法拖拽,不能交互),人家兄弟姐妹多,就拿那些势力若边缘小弟拖过来拽过去^_^。...该过滤条件在vis.setInteractive("graph.nodes", pCount, false)执行,即在组“graph.nodes”元素节点度数大于2不能交互(即鼠标拖拽无效)。

80050

java实现靠边隐藏窗口

说明: 由于个人精力有限,现将部分研究代码开源出来, 代码或思路有部分来源于网络,有些代码还没来得及整理, 如果您对这其中部分代码、思路整理出了一些文档,希望您能够联系我,分享您成果 我将在下一版更新您提供一些文档...一定要是此类定义3状态之一 */ public void setStates(AHFBodyState newState) { state = newState; } /*...* 返回状态,注意此方法和setStates方法区别与JFramesetState()和getState()方法 */ public AHFBodyState getStates() {...因为我们可以加大它Insets以提高鼠标进入和离开灵敏度 frame.addWindowFocusListener(this); // 注册一个焦点侦听器到窗体...为显示,以阻止子组件接收鼠标事件,减少事件触发 // 同样,移除此窗体组件侦听器,防止再次触发窗体移动事件 componentListeners =

2.4K10
领券