在 Swing 中设置焦点热键非常简单:
tfldPlantsNeeded = new JTextField( FIELD_LEN_MED );
lblPlantsNeeded = new JLabel( "Plants Needed" );
lblPlantsNeeded.setDisplayedMnemonic( 'p' );
lblPlantsNeeded.setLabelFor( tfldPlantsNeeded );
tfldPlantsNeeded
当用户按下 时,这将把焦点放在JTextField 上ALT+p
。它还突出显示/显示将触发焦点更改的角色。(在这种情况下,当ALT
按下时,“植物”中的“P”会带有下划线。)
这很棒……嗯,有点。在 Mac 上,当用户按下ALT
(也在Option
Mac 键盘上)时,助记符会突出显示,但p
按下时也不会触发焦点更改。但是,如果用户按下Control + Option + p
,那么它会按“预期”工作并且焦点会改变。(顺便说一句,如果用户按下Option + p
,当前聚焦的文本字段将插入有趣的字符。)
我知道我可以自己通过getInputMap
and指定自定义键绑定来做到这一点getActionMap
,但是有没有办法更改应用程序全局助记符修饰符,以便我们可以使用自动键绑定并触发字符突出显示?(就我而言,我想使用Command
orMeta
作为助记词修饰键。)