2010-10-06 17 views
0

Dans l'EDI NetBeans 6.9, si vous créez un New Project >> Java >> Java Desktop Application et que vous l'exécutez, vous verrez que les éléments du menu ont des mnémoniques, mais seulement après ALT.
(Le programme NetBeans utilise lui-même ce style de menu.)SingleFrameApplication qui ne nécessite pas ALT pour activer les mnémoniques menuitem?

Cependant, si vous créez un nouveau File >> Swing GUI Forms >> JFrame Form et ajoutez simple barre de menu avec mnémoniques, puis exécutez le JFrame, les mnémoniques apparaîtront toujours sans avoir à appuyer sur ALT . C'est ce que je préférerais.
(Firefox utilise ce style de menu)

Mes pensées sont que le org.jdesktop.application remplace le paramètre par défaut, mais c'est juste une supposition. Quelqu'un sait comment faire un SingleFrameApplication pas besoin de ALT à appuyer?

Merci.

Edit: Le problème a été constaté que ce JFrame et JDesktop utilisent différents Look par défaut et Paraît

+0

Quelle version de Windows utilisez-vous? Mon Firefox 3.6.10 sur XP nécessite Alt, qui est ce que toutes les applications natives font.Et l'exécution de votre premier exemple de code avec JDK6 nécessite également Alt. –

+0

J'utilise WinXP, FF 3.6.10 à la maison, et Windows 7, FF 3.6.10 au travail. Firefox et mon premier exemple montrent que File avec le 'F' souligné à tout moment sur les deux machines. –

+0

Désolé je n'ai pas compris par "mnémoniques apparaîtra toujours" vous vouliez dire le soulignement est toujours affiché. Vois ma réponse. –

Répondre

2

Il est un paramètre Windows. Dans XP, allez à:

  1. Panneau de configuration
  2. Affichage
  3. Apparence
  4. Effets
  5. Masquer les lettres soulignées pour la navigation du clavier jusqu'à ce que j'appuie sur la touche Alt

(Win7 devrait avoir un réglage similaire quelque part, je suppose.)

Le paramètre par défaut est activé, Java est donc correct et Firefox est incorrect (même Office 2003 ne respecte pas ce paramètre). Décochez la case et vous verrez toujours le texte mnémonique souligné en Java.

Notez que seul Windows LAF respecte correctement le paramètre. Motif et Métal montrent toujours le soulignement. Je n'utilise pas NetBeans ou jDesktop mais je suppose qu'il utilise le système LAF et donc le soulignement est correct.

Si vous voulez toujours montrer toujours souligner sous Windows LAF (s'il vous plaît réfléchir à deux fois avant de le faire), appelez UIManager.getLookAndFeelDefaults().put("Button.showMnemonics", false), qui ne pas semblent fonctionner pour XP parce que WindowsMenuItemUI#paintText vérifie le drapeau sous Vista. Vous pouvez vérifier Win7 JDK vous-même.


Notez qu'il ya an accepted bug lorsque le paramètre est activé, qui va comme ceci (vous permet d'économiser un peu de temps pour analyser le 2ème système de suivi des bogues le plus terrible dans l'univers. Le pire est un système ColdFusion en interne de mon entreprise utilisé pour avoir): créer un menu avec mnémonique, par exemple &File, appuyez sur Alt-F, relâchez, appuyez sur Alt-F à nouveau, le soulignement est parti. Ils sont de retour dès que vous faites quelque chose d'autre, en cliquant, ou appuyez simplement sur Alt par lui-même.

+0

J'ai oublié de traiter la partie jdesktop, mais comme vous pouvez le voir dans ma réponse, quoi que ce soit, ce n'est probablement pas correct, car vous devez respecter les paramètres de la plateforme. Et les motifs BTW et synthés montrent toujours le soulignement. J'espère que nimbus le fait bien. –

+0

Désolé, je voulais dire métal LAF dans mon commentaire précédent. Il ne respecte pas le paramètre Windows. jDesktop le fait correctement (un autre brainfart dans mon précédent commentaire) pour respecter le réglage. Voir ma réponse mise à jour. –

+0

Vous avez raison! 'UIManager.getLookAndFeelDefaults(). Put (" Button.showMnemonics ", true)' fait l'affaire. J'ai été erroné en rapportant que JFrame et JDesktop utilisaient le LAF en métal. (J'ai couru 'System.out.println (UIManager.getLookAndFeel());' avant l'appel du constructeur au lieu de l'après. Merci beaucoup! –