¿Hay alguna forma de usar Nimbus LAF (Look And Feel) en OS X mientras se puede usar la clave Meta para cortar/copiar/pegar y seleccionar-todas las operaciones?Atajos de teclado de Mac con Nimbus LAF
que actualmente tiene el siguiente código en el método principal de mi aplicación Swing, que cambia la LAF basado en el sistema operativo (por defecto para OS X, Nimbus para todos los demás):
if (!System.getProperty("os.name", "").startsWith("Mac OS X")) {
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(LicenseInspectorUI.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(LicenseInspectorUI.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(LicenseInspectorUI.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(LicenseInspectorUI.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
}
Lo hago como una solución porque Nimbus sobrescribe los métodos abreviados de teclado para cortar/copiar/pegar y seleccionar todo en OS X (clave Meta frente a tecla Ctrl). Preferiría usar Nimbus todo el tiempo, si solo los accesos directos de teclado no se anularan.
No veo cómo responde esto a la pregunta. Incluso si llama a getMenuShortcutKeyMask() al registrar accesos directos de teclado personalizados, esto no soluciona el uso incorrecto de Ctrl-C, Ctrl-V, etc. en un Swing TextField predeterminado cuando usa NimbusLookAndFeel en OSX. – yonran
@yonran: He elaborado más arriba. – trashgod
Parece que los nombres de las acciones difieren por componente. Por lo tanto, para asignar la acción de "copia", también deberá asignar DefaultEditorKit.copyAction. –