未触发菜单加速器 SWT.ALT+SWT.ARROW
Menu accelerator SWT.ALT+SWT.ARROW is not triggered
我正在使用 SWT 4.4.2 (win32) 为简单的 mp3 播放器应用程序构建图形用户界面。
在 SWT 树中,我显示了一些要播放的文件夹和文件。
现在我想通过单击菜单项并按 ALT+ARROW_UP 和 ALT+ARROW_DOWN[= 来更改播放文件的音量27=].
所以我有这些组件:
tree = new Tree(shell, SWT.BORDER | SWT.FULL_SELECTION | SWT.SINGLE | SWT.V_SCROLL);
tree.setLinesVisible(true);
tree.setLocation(10, 10);
tree.setSize(240, 440);
audioLouderMenu = new MenuItem(audioVolumeMenu, SWT.PUSH);
audioLouderMenu.setAccelerator(SWT.ALT | SWT.ARROW_UP);
audioLouderMenu.setText("Louder");
audioLouderMenu.addListener(SWT.Selection, audioVolumeMenuHandler);
audioQuieterMenu = new MenuItem(audioVolumeMenu, SWT.PUSH);
audioQuieterMenu.setAccelerator(SWT.ALT | SWT.ARROW_DOWN);
audioQuieterMenu.setText("Quieter");
audioQuieterMenu.addListener(SWT.Selection, audioVolumeMenuHandler);
问题是如果树视图有焦点并且我按下 ALT+ARROW_DOWN 那么树中的另一个条目将被选中而不是快捷方式菜单项被触发。
这是SWT的bug吗?如何解决?
我知道我可以定义另一个快捷方式,但我认为也应该可以使用 ALT+ARROW_UP/DOWN...
这不是错误,而是树的(依赖于平台的)键盘导航功能。
我建议为音频音量选择不同的快捷方式,以免混淆您的用户。如果您仍然想使用 ALT+ARROW_DOWN,您可以尝试阻止树使用此组合键,从而让菜单有机会使用它:
tree.addListener( SWT.KeyDown, new Listener() {
@Override
public void handleEvent( Event event ) {
if( event.keyCode == SWT.ARROW_DOWN && ( event.stateMask & SWT.MOD3 ) != 0 ) {
event.doit = false;
}
}
} );
我正在使用 SWT 4.4.2 (win32) 为简单的 mp3 播放器应用程序构建图形用户界面。
在 SWT 树中,我显示了一些要播放的文件夹和文件。
现在我想通过单击菜单项并按 ALT+ARROW_UP 和 ALT+ARROW_DOWN[= 来更改播放文件的音量27=].
所以我有这些组件:
tree = new Tree(shell, SWT.BORDER | SWT.FULL_SELECTION | SWT.SINGLE | SWT.V_SCROLL);
tree.setLinesVisible(true);
tree.setLocation(10, 10);
tree.setSize(240, 440);
audioLouderMenu = new MenuItem(audioVolumeMenu, SWT.PUSH);
audioLouderMenu.setAccelerator(SWT.ALT | SWT.ARROW_UP);
audioLouderMenu.setText("Louder");
audioLouderMenu.addListener(SWT.Selection, audioVolumeMenuHandler);
audioQuieterMenu = new MenuItem(audioVolumeMenu, SWT.PUSH);
audioQuieterMenu.setAccelerator(SWT.ALT | SWT.ARROW_DOWN);
audioQuieterMenu.setText("Quieter");
audioQuieterMenu.addListener(SWT.Selection, audioVolumeMenuHandler);
问题是如果树视图有焦点并且我按下 ALT+ARROW_DOWN 那么树中的另一个条目将被选中而不是快捷方式菜单项被触发。
这是SWT的bug吗?如何解决? 我知道我可以定义另一个快捷方式,但我认为也应该可以使用 ALT+ARROW_UP/DOWN...
这不是错误,而是树的(依赖于平台的)键盘导航功能。
我建议为音频音量选择不同的快捷方式,以免混淆您的用户。如果您仍然想使用 ALT+ARROW_DOWN,您可以尝试阻止树使用此组合键,从而让菜单有机会使用它:
tree.addListener( SWT.KeyDown, new Listener() {
@Override
public void handleEvent( Event event ) {
if( event.keyCode == SWT.ARROW_DOWN && ( event.stateMask & SWT.MOD3 ) != 0 ) {
event.doit = false;
}
}
} );