2016-04-05 3 views
0

Для моего свинга приложения JMenuItem имеет ускоритель установлен так:Установка JMenuItem акселератор текста, а не только действие

JMenuItem numFieldsMI = new JMenuItem("Set Number of Fields"); 
numFieldsMI.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_3, 
     ActionEvent.CTRL_MASK+ActionEvent.SHIFT_MASK)); 

Эти, когда графический интерфейс intitialized, делает текст рядом с пунктом меню чтения «Ctrl + Shift + 3 ", но, разумеется, намерение заключается в том, что текст будет« Ctrl + # ». Как я могу это сделать?

+0

Я думаю, что 'ActionEvent.CTRL_MASK + ActionEvent.SHIFT_MASK' должен быть' ActionEvent.CTRL_MASK | ActionEvent.SHIFT_MASK' ... – MadProgrammer

+0

У меня была игра с ключом KeyStroke.getKeyStroke (KeyEvent.VK_NUMBER_SIGN, ActionEvent.CTRL_MASK) 'и' KeyStroke.getKeyStroke (KeyEvent.VK_NUMBER_SIGN, ActionEvent.CTRL_MASK | ActionEvent.SHIFT_MASK) ', и ни один из них не будет вызвать «ActionListener» меню, тогда как «KeyEvent.VK_3», ActionEvent.CTRL_MASK | ActionEvent.SHIFT_MASK) 'действительно работало, хотя оно отображало' Ctrl + Shift + 3' ... поэтому вы можете показать, что вы хотите или работаете, по вашему выбору – MadProgrammer

ответ

0

Изменить

numFieldsMI.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_3, 
     ActionEvent.CTRL_MASK+ActionEvent.SHIFT_MASK)); 

в

numFieldsMI.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_3, 
     ActionEvent.CTRL_MASK ***|*** ActionEvent.SHIFT_MASK)); 
Смежные вопросы