Я работаю над приложением java swing, управляемым меню. В нем от 4 до 5 меню имеют 4 или более пунктов меню. Я определил ярлыки для всего пункта меню, используя JMenuBar#setKeyAccelerator(KeyStroke key)
. Но когда я определяю spacebar
как ярлык, а затем нажмите space
, он запускает событие для моего первого JMenuItem
или ранее выбранного пункта меню. Вот мой фрагмент кода:Пробел-ярлык для JMenuItem
JMenuItem item = new JMenuItem("Do Something");
item.setKeyAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_SPACE, 0));
Как добавить пробел в элемент меню так, чтобы он работал нормально.
В 'setKeyAccelerator (...)' метод hasn давно не знаю. Я бы посоветовал вам получить более современный JDK. Любой, который я тестировал с помощью VK_SPACE на текущем JDK, отлично работает. Я просто загрузил код «MenuLookDemo.java» из учебника Swing в [Как использовать меню] (http://docs.oracle.com/javase/tutorial/uiswing/components/menu.html) и сменил один из ускорителей , Если это не работает для вас, возможно, у вас есть несколько пунктов меню, используя пробел в качестве ускорителя или, возможно, это проблема JDK. Не могу определить, основываясь на двух строках кода. – camickr
@camickr Я использую обновление Java версии 7 45. –
Ну, как я уже сказал, посмотрите учебник для рабочих примеров. Мы не можем помочь вам на основе двух строк кода. – camickr