【问题标题】:How to change coordinates based on window movement?如何根据窗口移动更改坐标?
【发布时间】:2014-04-30 16:39:01
【问题描述】:

我的代码相当长,但这并不是我担心的全部。 这是在 Java 中。

有问题的班级位于:http://pastebin.com/5G6QLLBf

如果需要,可以发布或通过电子邮件发送整个代码。

当我运行该程序时,我当前在点击设置的二维数组中检查鼠标相对于 JPanel 的位置的方法是:

(Evt.getLocationOnScreen().x - (Correction from the distance of panels to edge of JFrame) - evt.GetX() - (The Distance between panels))/(The width of the panels)

对于 y(有几个不同的数字)相同,以获得 2 个整数值,等于该 JPanel 在数组中的位置。

但是,当通过拖动顶部栏移动窗口/JFrame 时,它​​无法正确找到面板,因为其中一个常量不正确。如何纠正窗口移动?或者至少得到一个窗口移位量的值?

【问题讨论】:

  • 我想知道你为什么首先使用这种方法。当您需要某些JPanel 中的“本地”坐标时,为什么要使用getLocationOnScreen 而不仅仅是getPoint()
  • “如果需要,可以将整个代码发布或通过电子邮件发送。” 不用了,谢谢。为了尽快获得更好的帮助,请在此线程中发布MCVE(最小完整和可验证示例)。

标签: java swing jframe mouselistener


【解决方案1】:

如果您只需要鼠标光标在您自己的 JFrame 中的位置,则无需转换 getLocationOnScreen() 给您的坐标。 java.awt.MouseInfo 应该可以帮助你得到你想要的:

Point p = MouseInfo.getPointerInfo().getLocation();
double x = p.getX();
double y = p.getY();

【讨论】:

  • 点击后会通过 JPanel 吗?
【解决方案2】:
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-11-12
  • 2016-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-12
相关资源
最近更新 更多