Ярлык пробела для JMenuItem

Я работаю над приложением 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));

Как добавить пробел в пункт меню, чтобы он нормально работал.


person Sachin Kumar    schedule 19.08.2015    source источник
comment
Метода setKeyAccelerator(...) уже давно не существует. Я бы посоветовал вам получить более актуальную версию JDK. Все, что я тестировал с помощью VK_SPACE на текущем JDK, работает нормально. Я только что загрузил код MenuLookDemo.java из учебника Swing по Как использовать меню и изменил один из ускорителей. Если это не работает для вас, возможно, у вас есть несколько пунктов меню, использующих пробел в качестве ускорителя, или, возможно, это проблема JDK. Не могу сказать, основываясь на двух строках кода.   -  person camickr    schedule 19.08.2015
comment
@camickr Я использую Java версии 7, обновление 45.   -  person Sachin Kumar    schedule 20.08.2015
comment
Что ж, как я уже сказал, посмотрите в учебнике рабочие примеры. Мы не можем помочь вам, основываясь на двух строках кода.   -  person camickr    schedule 20.08.2015


Ответы (1)


Я заметил свою проблему, я добавил панель инструментов с кнопкой, и моя кнопка автоматически фокусируется, поэтому, когда я нажимаю пробел, она нажимает мою кнопку на JToolBar

person Sachin Kumar    schedule 31.08.2016