使用java限制应用程序切换

时间:2013-10-23 06:23:53

标签: java desktop-application

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

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

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

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

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

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

有任何建议或解决方案吗?

2 个答案:

答案 0 :(得分:2)

简单地说,不能

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

但是,自助服务终端模式不是第三方应用程序可以控制的。这是计算机用户 - 必须精明 - 控制的东西。

答案 1 :(得分: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); }
     }
}