JavaFX 鼠标位置

2023-12-02

我需要在我的应用程序中获取鼠标单击的 x 和 y 坐标。我通过创建一个点在下面的代码中部分解决了这个问题,但根据我在屏幕上移动应用程序窗口的位置,我不断获得不同的坐标。稍后我需要一些恒定的东西来识别某些物体。感谢您的帮助!

    @Override
    public void start(Stage stage) throws Exception {

        final Pane root = new Pane();
        setWidth(1400);
        setHeight(1000);
        Canvas background = new Canvas(getWidth(), getHeight());

        final GraphicsContext context = background.getGraphicsContext2D();
        File f = new File("background.png");
        final Image image = new Image(new FileInputStream(f));

        root.getChildren().add(background);


        root.getChildren().add(b1);
        b1.setLayoutX(1300);
        b1.setLayoutY(10);


        final Canvas animation = new Canvas(getWidth(), getHeight());
        final Canvas animation2 = new Canvas(getWidth(), getHeight());

        animation.setMouseTransparent(true);
        animation2.setMouseTransparent(true);
        final GraphicsContext context2 = animation.getGraphicsContext2D();
        final GraphicsContext context3 = animation2.getGraphicsContext2D();

        root.getChildren().add(animation);
        root.getChildren().add(animation2);

        Scene scene = new Scene(root, getWidth(), getHeight());

        stage.setTitle("Old Gotham");
        stage.setScene(scene);
        stage.show();

        final Duration oneFrameAmt = Duration.millis(1000 / 60);
        final KeyFrame oneFrame;
        oneFrame = new KeyFrame(oneFrameAmt,
                new EventHandler() {
                    @Override
                    public void handle(Event event) {

                        context2.drawImage(image, 0, 0);
                        int offset = 700;

                        final Point p = MouseInfo.getPointerInfo().getLocation();

                        root.setOnMouseClicked(new EventHandler<Event>() {
                            @Override
                            public void handle(Event event) {
                                System.out.println(p.getX());
                                System.out.println(p.getY());
                            }
                        });

                    }
                });
        final Timeline tl = new Timeline(oneFrame);
        tl.setCycleCount(Animation.INDEFINITE);
        tl.play();
    }

对于James_D提供的代码,有一个错误:

enter image description here


我不明白为什么要在关键帧的侦听器内设置鼠标侦听器,但您需要从鼠标事件获取坐标。

MouseEvent定义getX() and getY()获取鼠标事件相对于节点本身的坐标,getSceneX() and getSceneY()获取鼠标事件相对于整体的坐标Scene、和(在 Java 8 中)getScreenX() and getScreenY()获取鼠标事件相对于整个屏幕坐标系的坐标。

因此,如果您对鼠标相对于窗口(场景)的位置感兴趣,请执行以下操作

root.setOnMouseClicked(new EventHandler<MouseEvent>() {
    @Override
    public void handle(MouseEvent event) {
        System.out.println(event.getSceneX());
        System.out.println(event.getSceneY());
    }
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JavaFX 鼠标位置 的相关文章

  • 如何知道 HTTP 服务器何时完成发送数据

    我正在开发一个面向浏览器 代理的项目 我需要下载网页 向 Web 服务器发送自定义 HTTP 请求后 我开始监听服务器响应 读取响应时 我检查响应标头中的 Content Length row 如果我得到其中之一 很容易确定服务器何时完成发
  • HibernateTemplate 可以与 EntityManager 共存吗?

    我们有一个 spring 3 应用程序 它仍然使用已弃用的HibernateTemplate为了持久性并希望迁移到更现代的 JPAEntityManager 是否可以在迁移过程中并行使用这两个 API 甚至可能在单个事务中同时使用 以便我们
  • SharePoint 2010 Web 服务上的 Java JBoss 401 错误

    我的代码在 Eclipse IDE 中测试时运行成功 我正在使用生成的 Copy wsdl 通过 Web 服务连接到 MS SharePoint 2010 当我在 JBoss 服务器上部署代码 运行 Adob e LifeCycle 时 我
  • 在 Java 中将字符串复制到文件的开头

    我想将一个字符串写入文件的开头 我该怎么做 我根本不知道如何添加字符串 这就是我到目前为止所做的 public static void prepend String filename String data throws IOExcepti
  • Runtime.getRuntime().exec(cmd) 挂起

    我正在执行一个命令 该命令返回文件的修订号 文件名 但如果执行命令时出现问题 应用程序就会挂起 我可以做什么来避免这种情况 请在下面找到我的代码 String cmd cmd C si viewhistory fields revision
  • 具有多个字符串的列表视图

    我正在尝试创建一个包含多个字符串的列表视图 现在我有一个可以实现的功能 while i lt 10 GETS DATA FROM WEBPAGE ETC a DATAFROMWEBPAGE1 b DATAFROMWEBPAGE2 c DAT
  • 为什么在大多数开源java项目中局部变量没有被声明为final?

    如果我查看 OpenJDK Hibernate 或 Apache 中的 java 源代码 我还没有看到任何声明为 Final 的局部变量 这表明一些最广泛使用的 java 软件库的开发人员 不要相信final关键字可以提高可读性 不相信它会
  • 在字节数组上进行右位旋转/循环移位的最快方法是什么

    如果我有数组 01101111 11110000 00001111 111 240 15 移位 1 位的结果是 10110111 11111000 00000111 183 248 7 数组大小不固定 移位范围为 1 到 7 含 目前我有以
  • Apache Camel - 路由中的事务

    我有一个关于 Apache Camel 的一般性问题 我无法找到聚合器是否已进行交易 如果是交易 交易是如何实现的 聚合的速度有多快 将消息发送到聚合器可以在事务中运行 您需要一个带有聚合器的持久存储来让传出消息充当事务 请参阅有关持久性的
  • 错误:类 kotlin.reflect.jvm.internal.FunctionCaller$FieldSetter

    我已尝试一切方法来消除此错误 但它不断出现 Class kotlin reflect jvm internal FunctionCaller FieldSetter can not access a member of class com
  • CXF 增加连接池大小而不更改 http.maxConnections

    最近我被要求将 CXF 配置为与我们旧的 XFire 服务相同的参数 这些参数之一是Keep Alive timeout 60 max 20 然而 我做了一些研究 看来 CXF 使用 JVMHttpURLConnection引擎盖下的对象
  • 在服务器上创建 Zip 文件并使用 java 下载该 zip

    我从 mkyong 获得了以下代码 用于在本地压缩文件 但是 我的要求是在服务器上压缩文件并需要下载它 任何人都可以帮忙吗 代码写入zip文件 public void zipFiles File contentFile File navFi
  • 避免加密和编码的 URL 字符串中的换行符

    我正在尝试实现一个简单的字符串编码器来混淆 URL 字符串的某些部分 以防止它们被用户弄乱 我使用的代码几乎与示例中的相同JCA指南 http docs oracle com javase 6 docs technotes guides s
  • 不幸的是 Project_Name 已停止

    我有一个简单的应用程序 您可以在文本视图中输入文本并按提交 它会在另一个活动中显示文本 然而 当我按下提交时 给我消息 不幸的是 发送已停止 我查看了SO上的其他线程 但是不幸的是 myfirstproject 在 java 中停止工作错误
  • Java Media API:java media api 下载

    我在哪里可以找到javax media jar 文件 在sun站点它下载一个安装程序 有没有可用的java媒体jar 没有 javax media 具体是 jar 文件 该包位于 jmf jar 文件中 您需要运行安装程序并取出 jar 或
  • 在地图中的图块上实现鼠标单击事件

    我正在尝试在 JPanel 上实现图像 基本上是地图上的图块 的鼠标单击事件 我只是不知道该怎么做 我有一个扩展 JPanel 的 Main 类 我正在从图块服务器检索图块 并根据特定的缩放级别在 Main 类的 PaintComponen
  • 确保 MAVEN_HOME 设置正确

    这里是 Java 和 Maven 菜鸟 使用 OSX 10 8 并使用 HomeBrew 安装 Maven 1 如果我说which mvn我会得到这个 usr local bin mvn 2 如果我说echo MAVEN HOME我不会得到
  • 项目级别的@PowerMockIgnore

    在 Maven 中运行时 我的 powermock 测试用例出现以下错误 java lang LinkageError loader constraint violation loader instance of org powermock
  • 请解释为什么Java和C对此代码给出不同的答案

    public class Test public static void main String args int i 10 i i System out println value of i is i 输出是 10 当我在中执行类似的代码
  • Cassandra 会话与集群 有什么可分享的?

    考虑 Cassandra 的 Session 和 Cluster 类 Java 驱动程序 我想知道有什么区别 在 Hibernate 中 每次都会创建一个会话并共享会话工厂 从许多来源我了解到 它被认为是创建一个会话并在多个线程之间共享它

随机推荐

  • 打印时 Html 表格断行

    我目前正在尝试打印的表格存在一些问题 如果它有多于一页 在分页符上 其中的表格行将被裁剪 我已经尝试过使用table page break inside auto and tr page break inside avoid page br
  • Fastlink 着陆页未呈现

    我正在致力于为我的应用程序实现用于聚合和 IAV 的 Fastlink 2 0 集成 我能够获取聚合和 IAV 的 oauth 令牌 但是当我使用它以及所需的参数来呈现 Fastlink 登录页面时 我得到的响应为 无法获取资源 我遵循的步
  • WPF 语音气泡

    我目前正在创建一个小软件 您可以在其中创建自己的漫画 我目前正在尝试添加气泡 我所做的是 我将一个文本框放在圆角边框内 这是我的结果 现在我想添加一个指向说话的角色的箭头 我想要得到的示例 箭头的位置应由用户选择 它想围绕边界旋转 我不知道
  • Python 数值积分与辛普森法则

    我已经开始学习这本书了 计算物理练习 5 4 及其练习 我遇到了以下问题 编写一个 Python 函数 J m x 使用 N 1000 个点的辛普森规则计算 Jm x 的值 在程序中使用您的函数在单个图形上绘制贝塞尔函数 J0 J1 和 J
  • Python正则表达式:如何仅增加字符串中的一个数字?

    我有以下类型的字符串 a1 images1subimages1 folder100 hello1 png a1 images1subimages1 folder100 hello1 png a1 images1subimages1folde
  • 每小时值总和

    我有一个具有以下结构和示例数据的表 STORE ID INS TIME TOTAL AMOUNT 2 07 46 01 20 3 19 20 05 100 4 12 40 21 87 5 09 05 08 5 6 11 30 00 12 6
  • Azure 流分析 - 应用窗口翻滚时自定义“时间戳”出错

    我有一个 json 文件 如下所示 imei imei 358174069248418F imeiBinary NYF0BpJIQY8 imeiNotEncoded 358174069248418 有效 1 dataPackets msy
  • 在 C# 中对对象的 ArrayList 进行排序

    我怎样才能排序ArrayList的物体 我已经实施了IComparable排序时的界面ArrayList 但我没有得到所需的结果 我的代码示例 public class Sort IComparable public string Coun
  • 为什么 os.path.expanduser 不返回主目录?

    我正在制作一个 python 桌面应用程序 它将日志作为 csv 文件保存在 Windows 上用户的文档文件夹中 该应用程序是用 python 2 7 和 kivy 1 8 0 编写的 使用 pyinstaller 2 1 打包为 Win
  • AFNetworking 2.0 并且仅在离线时使用缓存

    当用户使用我的应用程序但失去连接或使用飞行模式时 我遇到了问题 我的应用程序服务器端没有设置任何缓存策略 目前我无法更改它 我从 AFNetworking 1 x 迁移到 2 0 现在我正在使用AFHTTPRequestOperationM
  • maxRequestLength 的最大值?

    如果我们使用 IIS 7 和 Net Framework 4 则最大值是多少maxRequestLength 最大为2097151 如果尝试设置更多会发生错误
  • ?: (urls.W005) URL 命名空间“main”不是唯一的。您可能无法反转此命名空间中的所有 URL

    我在运行时收到此错误python manage py runserver urls W005 URL 命名空间 main 不是唯一的 你可能无法 反转此命名空间中的所有 URL 我的网站 urls py from django contri
  • 如何准备/使用 docker 执行器/拉取 docker 镜像 openfoamplus/of_v1612plus_centos66?

    我正在尝试拉取并运行 docker image openfoamplus of v1612plus centos66 如下所示 我用过这个主要命令 docker container run ti cfdengine openfoam ope
  • 混合使用同一类中的已实现方法和模拟方法

    我试图模拟类的某些方法 同时保留其他方法的真实实现 现在 我确实在 stackoverflow 上找到了相关内容here 但是 所有建议的答案都没有帮助我 在大多数情况下 Lee 的答案可能很好 但在我的情况下是不合适的 因为我确实需要模拟
  • 为什么 Google 地图的地理编码器返回日文字符?

    我有一个像这样的方法 Address address new Geocoder context getFromLocation latitude longitude 5 get 0 return address getThoroughfar
  • 如何从 iText 中的 PDF 中删除空白页

    我想从使用 Java 中的 iText 库生成的 PDF 中删除空白页 我该怎么做 C 根据kalyan的要求 public static void removeBlankPdfPages string pdfSourceFile stri
  • 如何以编程方式从 Access DB 中删除已知密码?

    由于我无法控制的原因 我必须处理一个新的 Access MDB 文件 该文件每月由我编写的自动化过程下载 解密和解压缩 尽管有 PGP 加密 发件人 保险公司 仍拒绝发送不受密码保护的 MDB 不幸的是 文件下载后立即进行处理 并假定没有密
  • 动态更改innerHTML设置

    我需要使用innerHTML 动态更改每个节点上设置的值 我找到的最接近的解决方案是 Object defineProperty Element prototype innerHTML set function get value ok v
  • Ajax 调用可以在 DOM 加载之前完成吗?

    我通过 jQuery Ajax 调用抓取数据 并将其显示在页面上 我需要等待 DOM 加载和 Ajax 调用完成 然后才能使用数据将其显示在页面上 Ajax 调用能否在 DOM 加载之前完成 我只是想确定需要将操作 DOM 并使用我返回的数
  • JavaFX 鼠标位置

    我需要在我的应用程序中获取鼠标单击的 x 和 y 坐标 我通过创建一个点在下面的代码中部分解决了这个问题 但根据我在屏幕上移动应用程序窗口的位置 我不断获得不同的坐标 稍后我需要一些恒定的东西来识别某些物体 感谢您的帮助 Override