Java:Windows L&F OSX。将 ctrl 替换为命令
Java: Windows L&F under OSX. Substitute ctrl to command
我在 OSX 上的 Java 申请必须使用 Windows L&F 之一。不幸的是,我无法将 L&F 更改为任何 Apple 兼容。
使用 windows 热键非常不方便(ctrl+c 而不是 cmd+c 等)。可能存在一个 "hack" 允许我在 windows L&F 的热键中全局使用命令键而不是控制(cmd -> ctrl)(不希望覆盖每个控件的键绑定)?
如果重要的话,我会使用 JGoodies Looks。
找到我要找的东西:
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);
}
我在 OSX 上的 Java 申请必须使用 Windows L&F 之一。不幸的是,我无法将 L&F 更改为任何 Apple 兼容。
使用 windows 热键非常不方便(ctrl+c 而不是 cmd+c 等)。可能存在一个 "hack" 允许我在 windows L&F 的热键中全局使用命令键而不是控制(cmd -> ctrl)(不希望覆盖每个控件的键绑定)?
如果重要的话,我会使用 JGoodies Looks。
找到我要找的东西:
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);
}