如何检查当前的Java应用程序是否在我的Windows PC上处于前景?


2

我想检查一下我的swing应用程序是否在前台。如果情况并非如此,我会使用应用程序的系统托盘图标来显示某些特定事件的气球通知。任何想法如何检查?

  0

不应该在的SystemTray /的TrayIcon和BallonTips当应用程序是不可见的,并已被最小化/发送到系统托盘仅用于?因为我不喜欢它,如果一个应用程序是开放的,仍然显示BallonTips IMO 06 12月. 122012-12-06 09:53:23

  0

大卫,如果我的应用程序被埋在其他窗口后面,它仍然被认为是最小化?如果是这种情况,即使是检查应用程序是否被最小化的方法也可以。 06 12月. 122012-12-06 09:58:22

  0

如回答(+1)所示,只要调用'isFocused()'返回false,而不是'在'JFrame''实例上调用'toFront()'或'requestFocusInWindow()'为'toFront()'已知的问题 06 12月. 122012-12-06 10:17:42

+1

谢谢David,理解。 06 12月. 122012-12-06 10:47:26

2

isActive()isFocused()是一个很好的起点,所以看看你的框架是否有焦点。

WindowListener也可用于在windowActivatedwindowDeactivated上作出反应。

  0

谢谢Neet,那正是我需要的。 06 12月. 122012-12-06 10:45:17

  0

都为我返回一个NullPointerException 11 6月. 172017-06-11 10:13:32


1

Focus subsystem帮助您检查窗口是否处于活动状态。

jframe.addWindowFocusListener(new WindowAdapter() { 

    //To check window gained focus 
    public void windowGainedFocus(WindowEvent e) { 
     //set flag 
     isWindowActive = true; 
    } 

    //To check window lost focus 
    public void windowLostFocus(WindowEvent e) { 
     //set flag 
     isWindowActive = false; 
    } 
}); 

HTH