2009-12-04 6 views
2

Lors de la réimplantation d'un programme existant, je souhaite conserver le texte du message que les utilisateurs connaissent. L'une des améliorations que j'aimerais ajouter est une bonne interface pour clavier, y compris les mnémoniques. Mais en utilisant le caractère mnémotechnique intuitif avec le texte existant donne des résultats laids. Par exemple:Si setMnemonic souligne un caractère autre que la première occurrence

useUpperCheckBox = new JCheckBox("Use UPPERCASE letters"); 
    useUpperCheckBox.setMnemonic(KeyEvent.VK_U); 

souligne le « U » dans « Utiliser » plutôt que le « U » dans « MAJUSCULES ». Puisque l'oeil de l'utilisateur est naturellement attiré par "UPPERCASE" à la recherche d'un mnémonique, l'emplacement par défaut de la décoration est un peu inintéressant.

Oui, j'ai lu les docs et les tutoriels qui disent que la première occurrence du caractère mnémonique est soulignée, mais ce n'est pas ce que je veux. Il arrive assez souvent que je ne peux pas croire que je suis le seul frustré par cela. Sûrement quelqu'un plus intelligent que moi a trouvé comment placer la décoration quelque part différente de l'emplacement par défaut.

Répondre

8

Utilisez la source, Luke. En regardant le code source de setMnemonic() m'a conduit rapidement à AbstractButton.setDisplayedMnemonicIndex():

Fournit une allusion à l'apparence à quel personnage dans le texte devrait être décoré pour représenter le mnémotechnique.

+0

Parfait! Merci pour le pointeur. – clartaq

+0

+1 pour enseigner comment trouver la réponse plutôt que de donner la réponse. – Nemi

0

Je sais que ce n'est pas la situation, mais elle est liée:

Si vous utilisez AbstractAction, essayez putValue(DISPLAYED_MNEMONIC_INDEX_KEY, index);.

Questions connexes