【发布时间】:2014-03-11 12:42:46
【问题描述】:
在 Swing 中设置焦点热键非常简单:
tfldPlantsNeeded = new JTextField( FIELD_LEN_MED );
lblPlantsNeeded = new JLabel( "Plants Needed" );
lblPlantsNeeded.setDisplayedMnemonic( 'p' );
lblPlantsNeeded.setLabelFor( tfldPlantsNeeded );
这将在用户按下ALT+p 时将焦点放在tfldPlantsNeeded JTextField。它还突出显示/显示将触发焦点更改的角色。 (在这种情况下,当按下ALT 时,“植物”中的“P”带有下划线。)
这太棒了……嗯,有点。在 Mac 上,当用户按下 ALT(在 Mac 键盘上也是 Option)时,助记符会高亮显示,但在按下 p 时也不会触发焦点更改。但是,如果用户按下Control + Option + p,那么它会按“预期”工作并且焦点会改变。 (顺便说一句,如果用户按下Option + p,当前聚焦的文本字段将插入有趣的字符。)
我知道我可以自己通过getInputMap 和getActionMap 指定自定义键绑定来做到这一点,但是有没有办法更改应用程序全局助记符修饰符,以便我们可以使用自动键绑定和触发字符突出显示? (就我而言,我想使用Command 或Meta 作为助记词修饰键。)
【问题讨论】:
-
是的(从未尝试过)那些加速器是 - 1. TextAction 或 2 UIManager
标签: java swing user-interface mnemonics