Я работаю над приложением Java Swing, управляемым меню. Он имеет от 4 до 5 меню, имеет 4 или более пунктов меню. Я определил ярлыки для всех пунктов меню, используя JMenuBar#setKeyAccelerator(KeyStroke key)
. Но когда я определяю spacebar
как ярлык, а затем нажимаю space
, он запускает событие для моего первого JMenuItem
или ранее выбранного пункта меню. Вот мой фрагмент кода:
JMenuItem item = new JMenuItem("Do Something");
item.setKeyAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_SPACE, 0));
Как добавить пробел в пункт меню, чтобы он нормально работал.
setKeyAccelerator(...)
уже давно не существует. Я бы посоветовал вам получить более актуальную версию JDK. Все, что я тестировал с помощью VK_SPACE на текущем JDK, работает нормально. Я только что загрузил кодMenuLookDemo.java
из учебника Swing по Как использовать меню и изменил один из ускорителей. Если это не работает для вас, возможно, у вас есть несколько пунктов меню, использующих пробел в качестве ускорителя, или, возможно, это проблема JDK. Не могу сказать, основываясь на двух строках кода. - person camickr   schedule 19.08.2015