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 :

Problème avec un JTextField (Event)


Sujet :

Composants Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    463
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 463
    Points : 114
    Points
    114
    Par défaut Problème avec un JTextField (Event)
    Salut !


    J'ai un problème bizarroïde avec un evènement sur un JTextField.
    Lorsque je saisis un caractère dans le JTextField, il s'affiche en double... et je vois absolument pas pourquoi !

    Si vous pouviez m'aider !

    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
     
    public class Form2 extends JFrame {
     
    	private JTextField jTextField1 = null;	
    	private StringBuffer jtf=null;
    	private int posjtf=0;
     
    .....
     
    	private JTextField getJTextField1() {
    		jtf=new StringBuffer(50);
    		if (jTextField1 == null) {
    			jTextField1 = new JTextField();
    			jTextField1.setBounds(new Rectangle(15, 65, 175, 20));
    			jTextField1.addKeyListener(new KeyAdapter() {
    				public void keyPressed(KeyEvent e) {
    					int code = e.getKeyCode ();
    					if (code== KeyEvent.VK_BACK_SPACE){
    						if (posjtf>0) {
    							jtf.deleteCharAt(posjtf-1);
    							posjtf--;
    							}
    						jTextField1.setText(jtf.toString().trim());
    						jTextField1.setCaretPosition(posjtf);
    //						System.out.println(jtf.toString()+" "+jtf.length()+" "+posjtf);
    						e.consume();
    					}
    					else if (code== KeyEvent.VK_DELETE){
    						if (posjtf<jtf.length()) jtf.deleteCharAt(posjtf);
    						jTextField1.setText(jtf.toString().trim());
    //						System.out.println(jtf.toString()+" "+jtf.length()+" "+posjtf);
    						e.consume();
    					}
    					else if (code== KeyEvent.VK_LEFT || code== KeyEvent.VK_KP_LEFT){
    						if (posjtf>0) posjtf--;
    						jTextField1.setCaretPosition(posjtf);
    						e.consume();
    						}
    					else if (code== KeyEvent.VK_RIGHT || code== KeyEvent.VK_KP_RIGHT){
    						if (posjtf<jtf.length())posjtf++;
    						jTextField1.setCaretPosition(posjtf);
    						e.consume();
    						}
    					else if (e.getKeyChar() != KeyEvent.CHAR_UNDEFINED && code != KeyEvent.VK_ENTER){
    						jtf.insert(posjtf, e.getKeyChar());
    						e.consume();
    						posjtf=jtf.length();
    //						System.out.println(jtf.toString()+" "+jtf.length()+" "+posjtf);
    						jTextField1.setText(jtf.toString());
    						jTextField1.setCaretPosition(posjtf);
    						int i=jList1.getNextMatch(jtf.toString().trim(), 0, Position.Bias.Forward);
    						System.out.println(i);
    						if (i!=-1) {
    							jList1.setSelectedIndex(i);
    							jList1.ensureIndexIsVisible(i);
    						}
    						else jList1.setSelectedIndex(-1);						
    					}
    				}
    			});
    		}
    		return jTextField1;
    	}
    }

    Merci !

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    463
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 463
    Points : 114
    Points
    114
    Par défaut
    Ok, c'est bon, j'ai mis KeyReleased à la place de KeyPressed.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    463
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 463
    Points : 114
    Points
    114
    Par défaut
    Bon, alors en fait, je vais revenir à KeyTyped (pour raisons diverses).


    Néanmoins, j'ai besoin des codes unicode de certains caractères.

    J'ai déjà celui du Backspace : '\u0008'
    Il me manque Del, Return, flèche gauche et flèche droite.

    Qqn peut-il m'aider ?

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    463
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 463
    Points : 114
    Points
    114
    Par défaut
    Bon, j'ai retouché mon code.

    En fait, a chaque fois qu'un évènement KeyPressed a lieu, je stocke le caractère dans un ArrayList de KeyEvent.
    Et c'est lorsqu'un évènement KeyReleased a lieu que je traite les caractères présents dans l'ArrayList.

    Mais il y a un truc qui m'ennuie lors de la saisie. Comment se fait-il que lorsqu'un caractère (une lettre) est pressé (KeyPressed), il est automatiquement rajouté dans le JTextField alors que d'autres caractères (comme le Backspace ou encore les flèches de direction) n'ont pas d'action directement répercutée dans le JTextField (et c'est donc moi qui doit les traiter) ?

Discussions similaires

  1. Réponses: 3
    Dernier message: 10/12/2008, 18h26
  2. Problème avec un JTextField
    Par Wamdeus dans le forum Composants
    Réponses: 14
    Dernier message: 30/12/2007, 23h17
  3. petit problème avec RadioButtons et event :-(
    Par Thundereagle dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 29/09/2007, 12h39
  4. Problème avec Rhapsody (statechart, event)
    Par F.R.E.D dans le forum Outils
    Réponses: 1
    Dernier message: 15/03/2007, 11h52
  5. Problème avec un JTextField
    Par yLaplace dans le forum Composants
    Réponses: 26
    Dernier message: 13/02/2007, 19h06

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