2015-09-04 4 views
-1

Мне нужно использовать один из Windows L & F для моего приложения Java на OSX. К сожалению, я не могу изменить L & F на любой совместимый Apple.Java: Windows L & F под OSX. Заменить ctrl на команду

Это очень неудобно использовать горячие клавиши Windows (ctrl + c вместо cmd + c и т. Д.). Возможно существует «хак», который позволяет мне глобально использовать командный ключ вместо управления (cmd -> ctrl) в горячих клавишах окон L & F (не хотите переопределять привязку клавиш для каждого элемента управления)?

Я использую JGoodies Looks если есть.

+0

Возможные [Дубликат] (http://stackoverflow.com/q/8105081/230513). – trashgod

+0

Нет. Это не дубликат. Мой вопрос более общий. Ответ, связанный только с пунктом меню. – FoxyBOA

+1

Вы также можете использовать 'getMenuShortcutKeyMask()' в привязке клавиш. –

ответ

0

Найдено, что я искал:

if (Desktop.getDesktop().isMacOSX()){ 
    // see MetalLookAndFeel class for details 
    String[] keys = {"TextField.focusInputMap", "PasswordField.focusInputMap", "TextArea.focusInputMap", "TextPane.focusInputMap", "EditorPane.focusInputMap", "FormattedTextField.focusInputMap"}; 
    //    , "List.focusInputMap", "Table.ancestorInputMap", "Tree.focusInputMap"}; 
    for(String item : keys){ 
     InputMapUIResource map = (InputMapUIResource) UIManager.get(item); 
     map.put(KeyStroke.getKeyStroke(KeyEvent.VK_C, KeyEvent.META_MASK), DefaultEditorKit.copyAction); 
     map.put(KeyStroke.getKeyStroke(KeyEvent.VK_V, KeyEvent.META_MASK), DefaultEditorKit.pasteAction); 
     map.put(KeyStroke.getKeyStroke(KeyEvent.VK_A, KeyEvent.META_MASK), DefaultEditorKit.selectAllAction); 
     map.put(KeyStroke.getKeyStroke(KeyEvent.VK_X, KeyEvent.META_MASK), DefaultEditorKit.cutAction); 
    } 
+0

Это работает на Mac OS X, но не на Windows; используйте 'getMenuShortcutKeyMask()', вместо [example] (http://stackoverflow.com/a/8105344/230513). – trashgod

+0

@trashgod: Я не могу получить ваш намек. Я работаю над Windows L & F, который делает все отлично в Windows. Мне нужно «настроить» его как-то для OS X, чтобы использовать, по крайней мере, собственные действия OS X copy/cut/paste. Это то, что я сделал в коде. Я могу использовать 'getMenuShortcutKeyMask()' вместо 'KeyEvent.META_MASK', но это ничего не меняет. Пожалуйста, объясните свою мысль. – FoxyBOA

+0

Вот более конкретный [пример] (http://stackoverflow.com/a/9781578/230513). – trashgod

Смежные вопросы