使用java限制应用程序切换

使用java限制应用程序切换,java,desktop-application,Java,Desktop Application,我想开发一个以全屏模式打开的JAVA桌面应用程序,并从DB中呈现一些问题及其选项 从数据库中获取数据并在标签上显示对我来说并不是什么大挑战 但当应用程序打开时,我想限制用户使用应用程序遍历键(如(Alt+Tab)等)在应用程序之间切换 在编码过程中,我使用了jFrame.setAlwaysOnTop(true)这会使应用程序始终处于顶部,但当我切换到桌面时;我的应用程序最小化,我可以访问其他应用程序 另外,像windows+D alos这样的键需要限制,或者换句话说,在不关闭应用程序的情况下,用

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

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

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

在编码过程中,我使用了
jFrame.setAlwaysOnTop(true)这会使应用程序始终处于顶部,但当我切换到桌面时;我的应用程序最小化,我可以访问其他应用程序

另外,像windows+D alos这样的键需要限制,或者换句话说,在不关闭应用程序的情况下,用户将无法选择任何其他选项

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

有什么建议或解决办法吗?

简单地说,你不能

如果您是机器的管理员,您可以将其配置为kiosk模式。在Windows8.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); }
     }
}

谢谢“黑暗”和“威尔”我的一个建议;按照操作系统在
main()
中的意思进行编码,首先使用
System.getProperty(“os.name”)
找到操作系统,然后根据操作系统,一些类将出现在那里,比如
windowsliminations
,如果windows操作系统在那里,然后按照你建议的阻止Alt+Tab键,在
Timer
上杀死explorer.exe,这样可以吗?