2015-09-04 46 views
-1

我必須使用Windows L & F之一爲OSX上我的Java應用程序。不幸的是,我無法將L & F更改爲任何Apple兼容。Java:OSX下的Windows L&F。替代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()'作爲[示例](http://stackoverflow.com/a/8105344/230513)。 – trashgod

+0

@trashgod:我無法得到你的提示。我已經在使用Windows L&F來完成Windows上的所有工作。我需要以某種方式「調整」它,以便OS X至少使用本機OS X的複製/剪切/粘貼操作。這就是我在代碼中所做的。我可以使用'getMenuShortcutKeyMask()'而不是'KeyEvent.META_MASK',但這會改變任何事情。請解釋你的觀點。 – FoxyBOA

+0

下面是一個更具體的[示例](http://stackoverflow.com/a/9781578/230513)。 – trashgod