2016-04-05 27 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)); 

此,當GUI被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));