2011-11-07 4 views
1

J'ai un bouton qui règle l'heure sur Timer. Alors maintenant je pousse. Le bouton change l'heure sur la minuterie et ceci est toujours sélectionné. Dans ce cadre j'ai keyListener donc quand je pousse l'espace Timer avec start mais maintenant quand je pousse l'espace il faut encore appuyer sur ce bouton car il est toujours sélectionné. Comment puis-je améliorer ce bouton quand je le pousse, il ne sera pas sélectionné?Comment désélectionner JButton

Répondre

4

Je ne suis pas sûr d'avoir parfaitement compris votre question. Si vous souhaitez désactiver cliquez sur un JButton:

JButton b = new JButton(); 
b.setEnabled(false); 

Si vous voulez désélectionner:

b.setSelected(false); 

Vous pouvez aussi trouver utile d'empêcher un bouton pour obtenir le focus:

b.setFocusable(false); 
+0

Si je comprends le message de l'affiche originale correctement, je pense que son problème sera résolu avec votre dernière suggestion: 'setFocusable (false);'. 1+ pour ça. –

+0

oui focalisable était ce que je cherche thx – hudi

0

Vous pouvez modifier le focus en appelant la méthode correcte dans KeyboardFocusManager

KeyboardFocusManager kfm = KeyboardFocusManger.getCurrentKeyboardFocusManager(); 
kfm.focusNextComponent(); 

Ceci provoque le focus sur le composant suivant, quel qu'il soit. Cela a l'avantage d'être indépendant de ce que le composant est, de sorte que si l'interface utilisateur change, cela passe toujours au composant "suivant" plutôt qu'à un composant spécifique que vous spécifiez pour recevoir le focus. Si votre problème est que vous ne voulez pas que l'utilisateur appuie sur le bouton alors que d'autres choses se produisent, vous devriez envisager de désactiver le bouton (comme expliqué dans une réponse précédente) afin qu'il ne puisse pas être activé. Vous devez l'activer à nouveau, bien sûr, dès qu'il est légal de l'utiliser à nouveau.

rc