【问题标题】:Fullscreen java app minimizes when screensaver turns on屏幕保护程序打开时全屏Java应用程序最小化
【发布时间】:2011-05-30 15:27:02
【问题描述】:

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

【问题讨论】:

  • 您使用哪种操作系统?
  • 你不能禁用屏幕保护程序吗?
  • 这些机器 24 月 7 日停产,我们不希望在 600 美元的触摸屏上失去使用寿命。
  • 这可能就是你要找的东西:stackoverflow.com/a/28375740/1686442

标签: java swing screensaver minimize


【解决方案1】:

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

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

【讨论】:

  • 不要在一个循环的线程中使用thread.sleep();。请改用ScheduledExecutorService
【解决方案2】:

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

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

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

【讨论】:

  • 这更像是我一直在寻找的途径。
【解决方案3】:

可能(还没有尝试过!)结合这些问题的答案,您会得到答案:

Calling Win32 API method from Java

Need to disable the screen saver / screen locking in Windows C#/.Net

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

【讨论】:

    猜你喜欢
    • 2022-12-21
    • 2020-07-04
    • 1970-01-01
    • 2016-07-17
    • 2021-05-30
    • 1970-01-01
    • 1970-01-01
    • 2012-01-11
    • 1970-01-01
    相关资源
    最近更新 更多