KeyListener

cs_eio Messages postés 30 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 18 juin 2011 - 11 juil. 2004 à 21:51
nataS22 Messages postés 66 Date d'inscription jeudi 24 juin 2004 Statut Membre Dernière intervention 28 février 2005 - 13 juil. 2004 à 15:55
Salut

En Java, j'ai un JTextField dont je veux empêcher l'impression de certain caractères dedans. Je suis capable de capturer le code de la touche qui est tapée mais je veux pouvoir modifier ce qui est réellement affiché. Par exemple : si je presse la touche d, je veux que ce soit la lettre x qui s'affiche ou à la limite faire en sorte que la lettre tapée ne s'affiche pas du tout.

est-ce possible de faire ça? si oui, comment

Merci A++

7 réponses

cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
11 juil. 2004 à 22:05
GodConan :clown)

utilise un JMaskedField avec un mask Formatter ;o) tout est deja prevu dedan... ;o)

++
0
nataS22 Messages postés 66 Date d'inscription jeudi 24 juin 2004 Statut Membre Dernière intervention 28 février 2005
12 juil. 2004 à 15:04
onnais pas JMaskedFiel est quoi, est où ?
0
nataS22 Messages postés 66 Date d'inscription jeudi 24 juin 2004 Statut Membre Dernière intervention 28 février 2005
12 juil. 2004 à 15:04
onnais pas JMaskedField est quoi, est où ?
0
nataS22 Messages postés 66 Date d'inscription jeudi 24 juin 2004 Statut Membre Dernière intervention 28 février 2005
12 juil. 2004 à 15:05
onnais pas JMaskedField est quoi, est où ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
nataS22 Messages postés 66 Date d'inscription jeudi 24 juin 2004 Statut Membre Dernière intervention 28 février 2005
12 juil. 2004 à 15:06
onnais pas JMaskedField est quoi, est où ?
0
nataS22 Messages postés 66 Date d'inscription jeudi 24 juin 2004 Statut Membre Dernière intervention 28 février 2005
12 juil. 2004 à 15:18
Désolé pour le message affiché 4 fois c le serveur qui n'arrète pas de bugger.
pas lol du tout
0
nataS22 Messages postés 66 Date d'inscription jeudi 24 juin 2004 Statut Membre Dernière intervention 28 février 2005
13 juil. 2004 à 15:55
J'ai repris le code qui sert à limiter l'affichage des entiers dans un JTextField
et en modifiant queleques truc voici une classe qui te permet d'empécher les caractères de s'afficher :

package monAppliVisuelle;

import javax.swing.JTextField;
import javax.swing.text.*;

public class JRestrictedField extends JTextField {

/**Constructeur par défaut*/
public JRestrictedField () {
super ();
}

/**Constructeur avec nombre de colonne*/
public JRestrictedField ( int nbColonne ) {
super ( nbColonne );
}

/**Méthode permettant d'indiquer quel type de modèle nous souhaitons*/
protected Document createDefaultModel () {
return new IntegerCaseDocument ();
}

/**Méthode retournant l'entier*/
public String getValue () {
return super.getText();
}

/**Méthode affectant l'entier*/
public void setValue ( String maPhrase ) {
super.setText ( "" + maPhrase );
}

public class IntegerCaseDocument extends PlainDocument {

/**Méthode appelé lorsqu'on veut insérer un élément dans un JTextField*/
public void insertString ( int offs, String uneString, AttributeSet a ) throws BadLocationException {

if ( uneString == null ) {
return;
}

char[] upper = uneString.toCharArray();
String tempo = "";

for (int i = 0; i < upper.length; i++) {

switch ( upper[i] ){
case '&':
case ' ':
case '~':
case '#':
case '{':
case '}':
case '(':
case ')':
case '[':
case ']':
case '-':
case '|':
case '`':
case '\\':
case '_':
case '^':
case '@':
case '=':
case '+':
case '*':
case '/':
case '£':
case '$':
case '%':
case '§':
case '!':
case ':':
case ';':
case ',':
case '?':
case '<':
case '>': tempo = tempo + "";
break;
default:
tempo = tempo + upper[i];
}

}

super.insertString(offs, tempo, a);
}
};
}

Tu n'as qu'a modifier les caractères dans le switch pour afficher ceux que tu veux et inversement.

@++
0
Rejoignez-nous