在Swing中设置焦点快捷键非常简单:
tfldPlantsNeeded = new JTextField( FIELD_LEN_MED );
lblPlantsNeeded = new JLabel( "Plants Needed" );
lblPlantsNeeded.setDisplayedMnemonic( 'p' );
lblPlantsNeeded.setLabelFor( tfldPlantsNeeded );
当用户按下“ALT + p”时,这将使焦点放在`tfldPlantsNeeded` JTextField上。它还会突出显示/显示触发焦点更改的字符。(在这种情况下,当按下`ALT`时,“Plants”中的“P”被强调为下划线。)
这很好 ... 嗯,有点。在Mac上,当用户按下`ALT`(也是Mac键盘上的`Option`)时,助记符被高亮显示,但当按下`p`时,焦点不会改变。然而,如果用户按下`Control + Option + p`,那么它按照“预期”工作,并且焦点被改变。(顺便说一句,如果用户确实按下`Option + p`,则当前聚焦的文本字段将插入奇怪的字符。)
我知道我可以通过`getInputMap`和`getActionMap`指定自定义键绑定来自己完成这项工作,但是否有一种方法可以更改应用程序全局助记符修饰符,以便我们可以使用自动键绑定和触发字符突出显示? (在我的情况下,我想使用`Command`或`Meta`作为助记符修改器键。)