禁用jxbrowser中的某些键

时间:2018-04-26 05:29:22

标签: java jxbrowser

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

我正在考虑使用jxbrowser。此处,在自助服务终端模式下,如何确保用户无法执行alt + tabwindows + 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);
    }

}

修改1:

确定。所以我更新了如上所示的代码。现在,我可以输入jxbrowser。但我仍然无法阻止用户执行alt + tabwindows + d

1 个答案:

答案 0 :(得分:0)

alt + tabwindows + d键是使用JxBrowser API无法禁用的系统级快捷方式。

InputEventsHandler<KeyEvent>用于过滤/禁止密钥,而不是将密钥发送到Chromium引擎。如果您为Chromium禁用alt + tab密钥,则表示操作系统无法获得此关键事件并且无法切换窗口。

如果您需要停用此类密钥,我建议您使用其中一个approaches