2015-09-21 2 views
0

Я использую SWT 4.4.2 (win32) для создания графического интерфейса пользователя для простого приложения mp3-плеера.
В дереве SWT я показываю некоторые папки и файлы для воспроизведения.
Теперь я хочу изменить громкость воспроизводимого файла, нажав на пункт меню, а также нажав ALT + ARROW_UP и ALT + ARROW_DOWN.Ускоритель меню SWT.ALT + SWT.ARROW не запускается

Так что эти компоненты:

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 и как я могу решить проблему? Я знаю, что я могу определить другой ярлык, но я думаю, что это также должно быть возможно использовать ALT + Arrow_up/DOWN ...

ответ

0

Это не ошибка, но (зависит от платформы) клавиатуры Функция навигации дерева.

Я рекомендую выбрать другой ярлык для громкости звука, чтобы не путать пользователей. Если вы все же хотите использовать 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; 
    } 
    } 
}); 
+0

Я думал, что другой элемент в дереве выбирается нажатием только ARROW_UP или DOWN. ALT + СТРЕЛКА не должна быть зарезервирована. Это немного запутанно. Но теперь я взял ваш фрагмент, и он работает, спасибо! – altralaser

Смежные вопросы