Java 禁用jxbrowser中的某些键

Java 禁用jxbrowser中的某些键,java,jxbrowser,Java,Jxbrowser,我有一个基于java的web应用程序。我希望以kiosk模式打开web应用程序,以便使用该应用程序的用户无法访问计算机上的任何其他应用程序,例如任何其他浏览器、文件浏览器等。此外,此web应用程序具有登录屏幕,用户可以在其中输入用户名和密码。所以,我需要用户能够输入登录详细信息 我正在考虑为此使用jxbrowser。这里,在kiosk模式下,如何确保用户不能执行alt+tab,windows+d等操作 下面是示例代码 import java.awt.BorderLayout; import j

我有一个基于java的web应用程序。我希望以kiosk模式打开web应用程序,以便使用该应用程序的用户无法访问计算机上的任何其他应用程序,例如任何其他浏览器、文件浏览器等。此外,此web应用程序具有登录屏幕,用户可以在其中输入用户名和密码。所以,我需要用户能够输入登录详细信息

我正在考虑为此使用jxbrowser。这里,在kiosk模式下,如何确保用户不能执行
alt+tab
windows+d
等操作

下面是示例代码

 import java.awt.BorderLayout;
import java.awt.Frame;
import java.awt.event.KeyEvent;

import javax.swing.JFrame;
import javax.swing.WindowConstants;

import com.teamdev.jxbrowser.chromium.Browser;
import com.teamdev.jxbrowser.chromium.InputEventsHandler;
import com.teamdev.jxbrowser.chromium.swing.BrowserView;

public class KioskApp {

    public static void main(String[] args) {
        // Create Browser instance
        final Browser browser = new Browser();
        BrowserView view = new BrowserView(browser);

        view.setKeyEventsHandler(new InputEventsHandler<KeyEvent>() {
            public boolean handle(KeyEvent event) {
                boolean b = event.isControlDown() 
                        || event.isAltDown() 
                        || event.getKeyCode() == KeyEvent.VK_TAB 
                        || event.getKeyCode() == KeyEvent.VK_WINDOWS;
                return b ;
            }
        });

        browser.loadURL("http://google.com");

        JFrame frame = new JFrame();
        frame.add(view, BorderLayout.CENTER);
        // Remove window title and borders
        frame.setUndecorated(true);
        // Make frame topmost
        frame.setAlwaysOnTop(true);
        // Disable Alt+F4 on Windows
        frame.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
        // Make frame full-screen
        frame.setExtendedState(Frame.MAXIMIZED_BOTH);
        // Display frame
        frame.setVisible(true);
    }

}
导入java.awt.BorderLayout;
导入java.awt.Frame;
导入java.awt.event.KeyEvent;
导入javax.swing.JFrame;
导入javax.swing.WindowConstants;
导入com.teamdev.jxbrowser.chromium.Browser;
导入com.teamdev.jxbrowser.chromium.InputEventsHandler;
导入com.teamdev.jxbrowser.chromium.swing.BrowserView;
公共类信息亭{
公共静态void main(字符串[]args){
//创建浏览器实例
最终浏览器=新浏览器();
BrowserView视图=新建BrowserView(浏览器);
view.setKeyEventsHandler(新的InputEventsHandler(){
公共布尔句柄(KeyEvent事件){
布尔b=event.isControlDown()
||event.isAltDown()
||event.getKeyCode()==KeyEvent.VK_选项卡
||event.getKeyCode()==KeyEvent.VK_窗口;
返回b;
}
});
browser.loadURL(“http://google.com");
JFrame=新JFrame();
添加(视图、边框布局、中心);
//删除窗口标题和边框
框架。设置未装饰(真实);
//使框架最上面
frame.setAlwaysOnTop(真);
//在Windows上禁用Alt+F4
frame.setDefaultCloseOperation(WindowConstants.DO\u NOTHING\u ON\u CLOSE);
//使画面全屏
frame.setExtendedState(frame.MAXIMIZED_两者);
//显示框
frame.setVisible(true);
}
}
编辑1:


嗯。因此,我更新了代码,如上所示。现在,我可以输入jxbrowser了。但是我仍然无法阻止用户执行
alt+tab
windows+d
alt+tab
windows+d
键是系统级快捷键,不能使用JxBrowser API禁用

InputEventsHandler
用于过滤/抑制按键,不将按键发送到Chromium引擎。如果禁用Chromium的
alt+tab
键,并不意味着操作系统不会获得此键事件,也不会切换窗口

如果您需要禁用这些密钥,我建议您使用一种可能的方法