【问题标题】:Java: Find out if an applet is showing on ScreenJava:确定小程序是否显示在屏幕上
【发布时间】:2012-09-11 12:35:06
【问题描述】:

我正在尝试用 Java 编写一个小程序来检查它是否显示在屏幕上。 有几种方法可以检查 Java 是否想要显示小程序或特定组件(即 .isShowing().isVisible() ),但没有一种方法可以检查应用程序是否真的在屏幕上可见。

假设您在您喜欢的浏览器的选项卡 A 中启动小程序。当您移至选项卡 B 时,小程序不再显示,但仍在运行(在这种情况下不会调用 applet.stop())。或者当您拥有带有小程序的页面但在它之前移动另一个页面时。我需要检查小程序是否真的对用户可见,而不是被任何其他东西隐藏(例如,在另一个应用程序后面。)

我认为在 java 中没有简单的方法可以做到这一点,因为我在过去 2 天搜索了它;)有人可以告诉我一些方法来实现这一点吗?您的帮助将不胜感激。

【问题讨论】:

  • JOptionPane.showConfirmDialog(applet, "Do U C Me?") // requires Motivated End User API

标签: java swing applet awt visibility


【解决方案1】:

我对小程序没有太多经验,但据我了解,你不需要检查它是Visible还是Showing,你需要检查它是否'Active。 检查这个 java 代码 -> Java Code

或者您可以在屏幕上定义一个范围并检测鼠标何时超出该范围。所以在这种情况下,即使小程序正在显示,您也会知道用户是否正在处理其他事情。 (用户在屏幕上同时打开两个浏览器)

【讨论】:

  • isActive() 如果小程序加载,则返回 true,但这不能解决我的问题 - 我正在尝试检查用户是否可以看到小程序(或小程序加载的页面)。第二个选项也不起作用,因为当小程序被另一个应用程序隐藏并且用户停留在提供的范围内时,您会得到一个不正确的真实结果。
  • 好吧,我假设如果浏览器窗口不活动,那么小程序也将不活动。当另一个窗口或应用程序就位时,它如何检测鼠标时刻?祝你好运。
  • 这很简单 .... 使用 MouseInfo.getPointerInfo().getLocation() 您可以检查屏幕上的位置并让 Thread.sleep() ... 然后在一段时间后调用该方法再次,如果它的坐标相同,那么鼠标还没有移动(或者至少像以前一样移动到了确切的位置。)
【解决方案2】:

我通过Frame.isFocused()解决了同样的问题。

【讨论】:

  • isFocused判断程序当前是否有键盘焦点,可以显示在屏幕上,但没有焦点...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-10
  • 2013-02-15
  • 1970-01-01
  • 1970-01-01
  • 2016-07-23
  • 2013-03-30
相关资源
最近更新 更多