Question

Je viens de commencer à bricoler JLine pour analyser les entrées de caractères en mode console. Cela semble bien fonctionner, mais je me demande:

Existe-t-il une méthode non bloquante dans JLine pour savoir si des caractères sont disponibles? (par exemple, kbhit () sous Windows.)

Je suppose que je pourrais toujours envelopper l'entrée du clavier dans son propre fil qui propose ensuite les caractères du clavier dans une file d'attente thread-safe au thread principal, mais il semble que cela devrait être inutile.

MODIFIER : il s’agit d’une analyse caractère par caractère. Je ne vais pas utiliser une interface graphique. Les entrées / sorties InputStream habituelles en mode console en mode Java nécessitent que vous appuyiez d'abord sur la touche Entrée (par exemple, l'entrée mise en mémoire tampon uniquement). S'il vous plaît, ne me dites pas que la saisie caractère par caractère en mode console est impossible en Java; ce n'est pas. JLine le fait en utilisant une interface portable avec une implémentation dépendante de la plate-forme.

Modifier la mise à jour : j'ai réussi à pirater une classe d'assistance pour effectuer le blocage des E / S dans un thread de travail (à l'aide de JLine pour les E / S par caractère, avertissement: vous devez analyser Ctrl-C vous-même!) & amp; puis communiquez via une file d'attente synchronisée avec une routine isempty (). Pour ce que je fais maintenant, ça va, mais j'aimerais vraiment connaître une bonne façon de faire cela à l'avenir.

Était-ce utile?

La solution

Vous semblez être sur la bonne voie.

Je pense que le " right " Pour ce faire, un thread de travail déverse toutes les E / S bloquantes dans une file d’attente non bloquante. Jetez un coup d’œil sur ConcurrentLinkedQueue.html" / ConcurrentLinkedQueue à partir de java.util. concurrent .

Autres conseils

Vous ne pouvez pas utiliser une console pour obtenir des entrées non bloquantes sans bibliothèques natives.

Vous devrez écrire une application Swing et écrire un KeyListener

Lisez ce tutoriel: http://java.sun.com/docs/books/ tutorial / uiswing / events / keylistener.html

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top