我有一个基于java的Web应用程序。我想以kiosk模式打开Web应用程序,以便使用该应用程序的用户无法访问计算机上的任何其他应用程序,例如任何其他浏览器,文件浏览器等。此外,此Web应用程序有一个登录屏幕,用户可以在其中输入用户名和密码。因此,我需要用户能够输入登录详细信息。
我正在考虑使用jxbrowser。此处,在自助服务终端模式下,如何确保用户无法执行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);
}
}
修改1:
确定。所以我更新了如上所示的代码。现在,我可以输入jxbrowser。但我仍然无法阻止用户执行alt + tab
和windows + d
答案 0 :(得分:0)
alt + tab
和windows + d
键是使用JxBrowser API无法禁用的系统级快捷方式。
InputEventsHandler<KeyEvent>
用于过滤/禁止密钥,而不是将密钥发送到Chromium引擎。如果您为Chromium禁用alt + tab
密钥,则表示操作系统无法获得此关键事件并且无法切换窗口。
如果您需要停用此类密钥,我建议您使用其中一个approaches。