Настроить горячие клавиши фокусировки в Swing очень просто:
tfldPlantsNeeded = new JTextField( FIELD_LEN_MED );
lblPlantsNeeded = new JLabel( "Plants Needed" );
lblPlantsNeeded.setDisplayedMnemonic( 'p' );
lblPlantsNeeded.setLabelFor( tfldPlantsNeeded );
Это даст фокус tfldPlantsNeeded
JTextField, когда пользователь нажмет ALT+p
. Он также выделяет/отображает символ, который вызовет изменение фокуса. (В этом случае при нажатии ALT
буква «Р» в «Растениях» подчеркнута.)
Это здорово... ну, вроде. На Mac, когда пользователь нажимает ALT
(что также является Option
на клавиатуре Mac), мнемоника подсвечивается, но изменение фокуса не срабатывает при нажатии p
. Однако если пользователь нажимает Control + Option + p
, то он работает как "ожидаемый" и фокус меняется. (Кроме того, если пользователь ДЕЙСТВИТЕЛЬНО нажимает Option + p
, в текущее выделенное текстовое поле будут вставлены забавные символы.)
Я знаю, что могу сделать это сам, указав пользовательские сочетания клавиш с помощью getInputMap
и getActionMap
, но есть ли способ изменить глобальный мнемонический модификатор приложения, чтобы мы могли использовать автоматические сочетания клавиш и запускать подсветку символов? (В моем случае я хотел бы использовать Command
или Meta
в качестве клавиши мнемонического модификатора.)