2011-05-30 154 views
3

我有一个应用程序设置了全屏框架,但在屏幕保护程序打开时似乎最小化。我希望此应用成为触摸屏信息亭用户可以使用的唯一应用,因此这是一个问题。无论如何要防止这一点?当屏幕保护程序打开时,全屏java应用程序最小化

+1

您使用哪种操作系统? – Serafeim 2011-05-30 15:30:21

+0

在虚拟机中运行的Windows XP – davidahines 2011-05-30 15:38:29

+1

难道你不能只是禁用屏幕保护程序? – 2011-05-30 15:56:51

回答

1

另一种方法是增加一个窗口监听器和复位状态时,它的失效:

 frame.addWindowListener(new WindowAdapter() { 
      @Override 
      public void windowDeactivated(WindowEvent e) { 
       frame.setExtendedState(JFrame.MAXIMIZED_BOTH); 
       // or go to fullscreen mode here 
      } 
     }); 

但禁止屏幕保护可能是开始的最好的事情。

+0

这是我一直在寻找的途径。 – davidahines 2011-05-31 19:51:40

2

The internet说,跨平台的方式来实现这一目标是调度键盘事件与此代码:

import java.awt.Robot; 
public void disableScreenSaver() throws AWTException { 
    Robot r = new Robot(); 
    r.waitForIdle(); 
    r.keyPress(KeyEvent.VK_CONTROL); 
    r.keyRelease(KeyEvent.VK_CONTROL); 
} 

,并安排其运行每几分钟(例如用thread.sleep();)。这样屏幕保护程序就不会显示出来。

我不知道,不过,关于非hackish的,跨平台的解决方案,我会很高兴地看到一个从别人谁知道它:)

+1

不要在循环中的一个线程中使用'thread.sleep();'。改为使用'ScheduledExecutorService'。 – 2014-03-11 08:34:22