1

我想开发一个 JAVA 桌面应用程序,它以全屏模式打开并从 DB 呈现一些问题及其选项。

从数据库中获取数据并在标签上显示对我来说并不是什么大挑战......

但是当应用程序打开时,我想限制用户使用应用程序遍历键(如(Alt+Tab)等)在应用程序之间切换。

在编码期间,我使用jFrame.setAlwaysOnTop(true);它使应用程序始终保持在顶部,但是当我切换到桌面时;我的应用程序被最小化,我可以访问其他应用程序。

像 windows+D 之类的键也想要限制,或者换句话说,如果不关闭应用程序用户将无法选择任何其他选项。

我想独立于平台应用所有这些限制意味着如果我的应用程序在 Linux/Unix 上运行,那么在那里也有相同的行为。

有什么建议或解决方案吗?

4

2 回答 2

2

简单地说,你不能

如果您是机器的管理员,您可以将其配置为kiosk模式。在 Windows 8.1 中,这变得越来越容易。

但是信息亭模式不是第三方应用程序可以控制的。这是计算机用户(必须精通)控制的东西。

于 2013-10-23T06:27:22.527 回答
1

您可以使用以下代码禁用/阻止 Alt+Tab。但是您不能阻止用户使用鼠标切换到桌面...

  public class AltTabStopper implements Runnable
{
     private boolean working = true;
     private JFrame frame;

     public AltTabStopper(JFrame frame)
     {
          this.frame = frame;
     }

     public void stop()
     {
          working = false;
     }

     public static AltTabStopper create(JFrame frame)
     {
         AltTabStopper stopper = new AltTabStopper(frame);
         new Thread(stopper, "Alt-Tab Stopper").start();
         return stopper;
     }

     public void run()
     {
         try
         {
             Robot robot = new Robot();
             while (working)
             {
                  robot.keyRelease(KeyEvent.VK_ALT);
                  robot.keyRelease(KeyEvent.VK_TAB);
                  frame.requestFocus();
                  try { Thread.sleep(10); } catch(Exception) {}
             }
         } catch (Exception e) { e.printStackTrace(); System.exit(-1); }
     }
}
于 2013-10-23T06:37:27.943 回答