IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants Java Discussion :

Entrée clavier / GUI / Console


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2008
    Messages
    136
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 136
    Par défaut Entrée clavier / GUI / Console
    Bonjour,

    Voici mon problème. J'ai une interface graphique en Swing, contenant un Jlabel. J'aimerai que ce Jlabel se mette a jour en fonction des entrées clavier.
    J'ai donc procédé de la manière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    		new SwingWorker() {
    			String res="";
    			public Object construct() {
     
    				while (true) {
     
    					BufferedReader clav = new BufferedReader(new InputStreamReader(System.in));
    					try {
    						res = clav.readLine();
    						publish(res);
    						}
    						catch (IOException e) {
    							System.out.println(e);
    						}
    				}
    			}
     
     
    			public void finished() {
    				lfdNr.setText(res);
     
     
     
    		    protected final void publish(final Object value) 
    		    {
    		    	SwingUtilities.invokeLater(new Runnable() {
    		    		public void run() {
    		    			process(value);
    		    		}
    		    	});
    		    }
     
    		    protected void process(Object value) {
    		    	lfdNr.setText(res);
    		    	cadImg.setLfdNr(Long.parseLong(res));
    		        gButton.setLfdNr(Long.parseLong(res));
    		    }
    		}.start();
    Ceci marche plutôt bien, a une exception pret : l'entrée du clavier n'est prise en compte que si j'ai le focus sur la console, ce qui m'oblige a switcher entre mon interface graphique pour voir le resultat, et ma console pour ecrire du texte.
    Comment pourrai-je faire, pour que l'utilisation du clavier soit prise en compte quand je suis sur ma GUI, et non uniquement sur ma console ?

    Merci d'avance

    Cordialement

  2. #2
    Membre confirmé
    Inscrit en
    Décembre 2008
    Messages
    136
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 136
    Par défaut
    Je crois que je vais pouvoir me repondre moi-meme en disant : "Il faut utiliser les KeyListener (abruti ! ) "
    Mhh je vais préciser ma question en fait : c'est pas vraiment l'entree clavier que je veux lire, mais j'ai un lecteur de code barre connecté, qui renvoit en String le code lu. Je peux quand meme m'en sortir avec KeyListener ?

  3. #3
    Membre confirmé
    Inscrit en
    Décembre 2008
    Messages
    136
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 136
    Par défaut
    Me revoila
    J'ai donc ajouté un KeyListener sur mon Jlabel. Le probleme etant que qaund je clic quelque part sur mon interface, ce Jlabel pert le focus et par consequent, le listener ne marche plus.
    Pour mon programme il faudrait que le listener marche en permanence, mais que le clic sur l'interface soit tout de meme possible.
    Existe-t-il un moyen d'y parvenir ?

    Merci

  4. #4
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Ce genres de trucs n'est pas franchement réalisable, trop de possibilités, puis tu risques de tomber sur un bug à tout moment.

    Sérieusement, je me demande si tu ne passerait pas moins de temps à coder directement la récupération des données de ta douchette.

    Genre en utilisant ce genre de choses en supposant que ton lecteur est branché par USB: http://lxer.com/module/newswire/ext_link.php?rid=116455.

    L'avatage étant que tu as juste un thread à lancer pour écouter sur ton port USB, puis de répercuter les infos entrantes sur ton interface graphique. Et comme ça plus besoin de gros hacks Swing à la mords moi le noeud.

  5. #5
    Membre confirmé
    Inscrit en
    Décembre 2008
    Messages
    136
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 136
    Par défaut
    Bonjour,
    Merci pour ta réponse. Mais es-tu sur de m'avoir envoyé le bon lien ? J'avais l'impression qu'il n'avait pas de lien direct avec mon problème. Qu'entends-tu par "coder directement la récupération des données de ta douchette" ? En fait la douchette que j'utilise actuellement se branche sur le port ps2 du clavier, et marche exactement comme un clavier. Si j'ouvre l'editeur de texte, et scanne un code barre, le code apparait. Seulement j'aimerai integrer ce code lu a mon programme java, et surtout rendre ce code visible dans mon interface graphique.
    Le fait de lancer un thread "ecoutant" la lecture du code barre, c'est ce que je pensais faire avec le Swingworker. Le probleme etant que vu la manière dont la lecture marche actuellememt, je susi obligé de repasser sur la console.

  6. #6
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Effectivement je me suis un poil gouré dans le lien, voilà la bonne version: http://inf.ntb.ch/infoportal/help/in...tal/tools.html.

    Le problème c'est qu'elle suppose que tu possède une douchette USB (ce qui est plutôt facile à trouver et pas trop trop cher). De ce fait tu découples le coté saisie douchette et entrée dans l'interface vu qu'avec cette api tu peux intercepter les flux en provenance d'un port USB.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [SWING] gérer les entrées clavier à un seul endroit
    Par Isher dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 19/07/2006, 10h55
  2. Pas le même clavier en console et en mode graphique
    Par Eusebius dans le forum Matériel
    Réponses: 4
    Dernier message: 05/12/2005, 17h53
  3. [Débutant] console , entrée clavier
    Par maminova dans le forum Entrée/Sortie
    Réponses: 8
    Dernier message: 18/10/2005, 10h49
  4. [Entrée standard] Prendre les entrées clavier.
    Par Katyucha dans le forum Langage
    Réponses: 4
    Dernier message: 19/09/2005, 12h22
  5. Réponses: 3
    Dernier message: 04/02/2004, 18h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo