当屏幕保护程序打开时,全屏java应用程序最小化

当屏幕保护程序打开时,全屏java应用程序最小化,java,swing,screensaver,minimize,Java,Swing,Screensaver,Minimize,我有一个设置全屏画面的应用程序,但当屏幕保护程序打开时,它似乎会最小化。我希望这个应用程序是触摸屏信息亭用户可以使用的唯一应用程序,所以这是一个问题。有没有办法防止这种情况发生?说实现这一点的跨平台方法是使用以下代码安排键盘事件: import java.awt.Robot; public void disableScreenSaver() throws AWTException { Robot r = new Robot(); r.waitForIdle(); r.keyPress

我有一个设置全屏画面的应用程序,但当屏幕保护程序打开时,它似乎会最小化。我希望这个应用程序是触摸屏信息亭用户可以使用的唯一应用程序,所以这是一个问题。有没有办法防止这种情况发生?

说实现这一点的跨平台方法是使用以下代码安排键盘事件:

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();
)。这样屏幕保护程序就不会出现

不过,我不知道一个非黑客的跨平台解决方案,我很高兴看到有人知道它:)

可能(还没有尝试过!)您可以通过组合以下问题的答案得到答案:


当然,这只适用于Windows,这就是我询问您有关操作系统的原因:)

另一种方法是添加窗口侦听器,并在其停用时重置状态:

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

但是禁用屏幕保护程序可能是最好的开始。

您使用哪种操作系统?难道您不能禁用屏幕保护程序吗?这些机器是24/7运行的,我们不希望在600美元的触摸屏上浪费生命。这可能就是您要找的:这更是我要找的途径。不要使用
thread.sleep()在此循环中的一个线程中。改用
ScheduledExecutorService