Gwt GXT:如何拦截ctrl-f4
我想截取Ctrl+F4以关闭选项卡面板的选项卡,而不是运行应用程序的浏览器选项卡。如果首先单击选项卡面板内部,则以下代码有效:Gwt GXT:如何拦截ctrl-f4,gwt,keyboard-shortcuts,gxt,Gwt,Keyboard Shortcuts,Gxt,我想截取Ctrl+F4以关闭选项卡面板的选项卡,而不是运行应用程序的浏览器选项卡。如果首先单击选项卡面板内部,则以下代码有效: Viewport v = new Viewport(); v.setLayout(new FitLayout()); v.add(panel); v.addListener(Events.KeyDown, new Listener<BaseEvent>() { public void handleEvent(
Viewport v = new Viewport();
v.setLayout(new FitLayout());
v.add(panel);
v.addListener(Events.KeyDown, new Listener<BaseEvent>() {
public void handleEvent(BaseEvent be) {
KeyEvent ce = (KeyEvent)be;
if (ce.isControlKey()) {
if (ce.getKeyCode() == 115) {
System.out.println(ce.getKeyCode() + " Ctrl-f4");
ce.preventDefault();
ce.stopEvent();
}
}
};
});
Viewport v=新视口();
v、 setLayout(新的FitLayout());
v、 添加(面板);
v、 addListener(Events.KeyDown,newlistener()){
公共无效handleEvent(BaseEvent be){
KeyEvent ce=(KeyEvent)be;
if(ce.isControlKey()){
if(ce.getKeyCode()==115){
System.out.println(ce.getKeyCode()+“Ctrl-f4”);
ce.preventDefault();
ce.stopEvent();
}
}
};
});
有趣的是,如果焦点在TabPanel之外(显然位于视口内部),则不会触发事件
有什么想法吗?您可以使用
ClosingHandler
截获窗口关闭事件并提示用户确认。但是,您不能完全阻止窗口/选项卡关闭-浏览器将不允许关闭。你必须选择一个不同的键盘快捷键
选择快捷方式后,请使用以下方法进行检测:
Event.addNativePreviewHandler(new NativePreviewHandler() {
@Override
public void onPreviewNativeEvent(NativePreviewEvent event) {
if (event.getTypeInt() == Event.ONKEYDOWN) {
NativeEvent ne = event.getNativeEvent();
if (ne.getKeyCode() == 't' && ne.getCtrlKey()) {
// ...
}
}
}
});
ctrl-f4
是特定于windows的,因此您不应该依赖它
要捕获用户关闭窗口/选项卡,请使用窗口。ClosingHandler
:
Window.addWindowClosingHandler(new Window.ClosingHandler() {
@Override
public void onWindowClosing(ClosingEvent closingEvent) {
closingEvent.setMessage("Closing? Really?")
}
});
这将显示一个带有消息和确认按钮的浏览器对话框。捕获事件现在起作用,停止则不起作用。我尝试了ne.stopPropagation()、ne.preventDefault()和event.cancel()。但是没有一个有效,也就是说,该选项卡被浏览器关闭。你完全正确:我还需要捕获其他组合。但我想在捕捉到ctrl+f4(或ctrl+q或其他)时关闭TabPanel中的面板。因此,我不能使用关闭处理程序。