Java multiples Bouton d'action
J'ai besoin de développer une application Java avec une interface graphique, ce qui représente un distributeur automatique de billets. Pour cela, je dois lire le Numéro de Compte et le code PIN de la "clavier" (9 boutons). Je doit lire chaque action de chaque bouton est enfoncé (l'action de l'écouteur de retourner la valeur de la touche), et de les enchaîner son numéro de chaîne que lorsque le bouton "ok" est pressé, il doit retourner à l'int (Integer.parseInt()
). Mon problème est de savoir comment puis-je "wait\stop\gel" mon programme jusqu'à ce qu'avait introduit le nombre et la touche "ok"?
Je suis désolé si cette question était un peu confus
Merci pour votre aide 😉
P. S j'ai une classe pour chaque parte de la machine ATM. Par exemple:Clavier , Écran, ATM, etc..
P. S. S Si vous voulez voir un peu de code s'il vous plaît dites 😉
est stackoverflow devenir homeworkoverflow?
Thant vous tous. Vous tous de m'aider beaucoup, merci à vous ;). J'ai enfin découvrir mon gros problème, qui a été threads. j'ai été de tous les programmes dans un seul thread, et iknow je l'ai divisé en deux, une qui crée la fenêtre et un autre qui exécute le programme. Merci beaucoup 😉
OriginalL'auteur user1118437 | 2011-12-27
Vous devez vous connecter pour publier un commentaire.
Le composant qui contient le clavier composants et le bouton "OK", doit s'inscrire lui-même comme un
ActionListener
à tous. Afin de différencier entre les composants de source, utilisez lagetSource()
méthode de laEventObject
. Une fois que vous avez trouvé le composant qui a généré l'événement, soit ajouter le numéro à la définir ou de valider les saisies de code PIN.L'extrait de code suivant tente de valider la longueur d'une entrée numéro de BROCHE:
Exemple -
a) PIN non Valide longueur
b) Valide longueur de la GOUPILLE
Veuillez voir modifier. Aussi le "gel" d'un programme, en particulier une INTERFACE utilisateur n'est pas facile à utiliser*.
OriginalL'auteur mre
JFrame
.ActionListener
classe pour vos boutons. Dans le constructeur, mettre le texte que le bouton ActionListener va ajouter si son bouton est cliqué.ActionListener
à chacun. PourJButton
1, ActionListener ajouter "1". PourJButton
2, faire ajouter "2". Etc.....Integer.parseInt()
pinString et vérifier la valeur analysée avec le réel, de BROCHES et de faire ce que vous voulez faire si elles correspondent ou ne correspondent pas.Encore une fois, vous n'avez pas besoin d'un "gel" de votre programme. Vous avez besoin pour répondre à ses membres. Croyez-moi, et le reste d'entre nous comme nous l'avons fait à plusieurs reprises dans les programmes beaucoup plus "complexe" que les vôtres.
OriginalL'auteur eboix
Il serait utile d'examiner d'autres code; java calculatrice tutoriels sont nombreux. En principe, vous pouvez avoir votre bouton OK désactivé (
setEnabled(false)
) et sur les 4 touches ajouté à une Chaîne globale:setEnabled(pinCode.length() == 4)
.On ne peut pas dans une séquence de demander 1, 2, 3, 4 algorithmes et puis continuer. On ne peut désactiver tous les boutons, mais les boutons numériques. Puis au bout de 4 chiffres sont entrés, permettre à d'autres boutons, et de modifier l'état pour faire face à la prochaine étape. C'est l'événement approche pilotée par opposition à la modale de la séquence.
OriginalL'auteur Joop Eggen
Vous êtes peut-être après quelque chose comme une boîte de dialogue modale. E. G.
Qui va "geler" l'interface graphique principale jusqu'à ce que rejeté.
Vérifier la valeur de retour. Si c'est
null
, l'utilisateur a annulé la boîte de dialogue.OriginalL'auteur Andrew Thompson
Vous ne voulez pas un "gel" de votre programme. Au contraire, vous voulez le code, afin que l'auditeur qui répond à la appuyez sur le bouton OK, ne fait son action si le nombre de boutons précédemment. Cela nécessitera que vous donnez à la classe une variable qui contient les résultats de la dernière xxx appuie sur un bouton (un tableau ou une liste pourrait travailler pour telle ou même une simple Chaîne de caractères), puis dans votre bouton ok est à l'écoute, avoir un bloc if qui vérifie cette variable et si OK, effectue sa magie.
Par exemple, vous pourriez avoir de la Chaîne de caractères appelée pinInput et de l'avoir = "" ou la Chaîne vide (ou mieux, un StringBuilder -- mais ce n'est pas totalement nécessaire pour votre programme simple). Dans chaque numéro de bouton de l'écouteur, vous concaténer la Chaîne de caractères représentant le nombre pressé sur le pinInput Chaîne. Dans le bouton OK de l'auditeur-vous de vérifier pour voir si le pinInput la longueur est plus que le minimum requis caractères de long, et, dans l'affirmative, de prendre les x derniers caractères de la Chaîne et de tester si elles correspondent à la BROCHE.
Edit:
Vous affirmez:
Vous pouvez permettre à la classe principale pour ajouter un écouteur à n'importe quelle autre classe, si besoin est, afin qu'il soit informé si une touche est pressée.
Peu importe la façon dont vous regardez cela, vous aurez besoin d'utiliser des écouteurs afin que votre programme répond à des événements ("event-driven"). C'est la façon dont Java Swing GUI.
Edit 2
Pour exemple voici le code où la JFrame est titulaire d'un Composite qui a JButtons sur elle, et la JFrame répond uniquement si les boutons sur le Composite sont poussés dans un certain ordre -- A, puis B, puis sur OK:
il fonctionne très bien pour moi. Si cela ne fonctionne pas pour vous, n'hésitez pas à nous dire pourquoi.
voir modifier.
voir edit 2 pour le code exemple.
OriginalL'auteur Hovercraft Full Of Eels