Java:将光标保持在一个区域

标签 java cursor awt

对于那些玩过 Madness Interactive 的人来说,最令人沮丧的事情之一就是当光标离开游戏区域时,您不小心点击了。这会导致游戏散焦,您的角色会在几秒钟内死亡。为了解决这个问题,我想制作一个可以在后台运行的 Java 应用程序,它将光标保持在屏幕内,直到我按下某个键,例如 ESC 或其他键。

我看到了两种实现方式,但我不知道它们是否可行。

  1. 制作一个与 Madness Interactive 的渲染区域大小相匹配的 AWT 框架,并使用它来控制光标。
  2. 使用一些脱离上下文的操作系统调用将光标保持在给定区域。

方法 1 的优点:更容易调整框架的大小,以便用户可以看到封闭区域的形状和位置。

方法 1 的潜在问题:AWT 框架可能需要从运行游戏的浏览器窗口窃取焦点,从而使整个解决方案毫无意义。

我的问题是,这两种方法是否可行?如果没有,是否有可行的选择?

编辑:如有必要,我愿意使用另一种编程语言。

EDIT2:我可能会为此开发一个浏览器插件,但我以前从未做过那种开发。我会研究它。

最佳答案

如果您仍然对使用 Java 工作感兴趣,这里有一个可能的解决方案。

首先,为了将光标限制在一个区域内,您可以使用 Java Robot 类。

mouseMove(int x, int y);

然后,您可以使用 AWT 的 MouseInfo 来获取鼠标光标的位置。

PointerInfo mouseInfo = MouseInfo.getPointerInfo();
Point point = mouseInfo.getLocation();
int x = (int) point.getX();
int y = (int) point.getY();

然后,每当鼠标光标的 xy 值超过某个点时,使用 Java Robot 类将它们移回。

关于Java:将光标保持在一个区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13831695/

相关文章:

java - 如何在Spring Boot中更改ProviderSignInController中的属性signUpUrl

android - 如何确定一列是否为游标对象的 bool 值?

vim - 在 Vim 中,您可以在 'set cursorline' 上停止空白字符的颜色变化吗?

android - SimpleCursorAdapter 不会填充我的 ListView,没有错误,只是什么也没发生

java - 据说 `libX11`不是线程安全的。这是否意味着我不能将 Java AWT 与其他也使用 X11 的东西(例如 Qt)混合使用?

Java JPG转PNG

java - Java中通过正则表达式从字符串中提取数字

java - LibGdx屏幕: render and lifecycle

Java 错误地解析了一些日期,即使它们是有效的

java - 尝试在 JTabbedPane 上动态生成包含内容的选项卡,但在线程 "AWT-EventQueue-0"中出现异常