TextListener

nataS22 Messages postés 66 Date d'inscription jeudi 24 juin 2004 Statut Membre Dernière intervention 28 février 2005 - 22 févr. 2005 à 11:17
nataS22 Messages postés 66 Date d'inscription jeudi 24 juin 2004 Statut Membre Dernière intervention 28 février 2005 - 22 févr. 2005 à 14:23
Comment utiliser un textListenner avec un JIntegerField :





merci.



nataS

1 réponse

nataS22 Messages postés 66 Date d'inscription jeudi 24 juin 2004 Statut Membre Dernière intervention 28 février 2005
22 févr. 2005 à 14:23
Voici en quoi consiste le JIntegerField :



import java.awt.event.FocusEvent;

import java.awt.event.FocusListener;



import javax.swing.JTextField;

import javax.swing.text.*;



public class JIntegerField extends JTextField implements FocusListener{



private int tailleMax = 2;

private int valMax = 99;

private int valMin = 0;



/**Constructeur avec nombre de colonne*/

public JIntegerField ( int nbColonne ) {

super ( nbColonne );



this.addFocusListener( this );



}



/**Constructeur avec nombre de colonne*/

public JIntegerField ( int nbColonne, int taille, int max, int min ) {

super ( nbColonne );



tailleMax = taille;

valMax = max;

valMin = min;



this.addFocusListener( this );

}



/**Constructeur avec initialisation du texte et longueure du champ */

public JIntegerField( int valeur, int taille, String aide, String enabled ) {

super ( String.valueOf ( valeur ), taille);

setToolTipText ( aide );



if ( enabled.equals ( "true" )){

setEnabled ( true );

}

else if ( enabled.equals ( "false" )){

setEnabled ( false );

}



this.addFocusListener( this );



}



/**Méthode permettant d'indiquer quel type de modèle nous souhaitons*/

protected Document createDefaultModel () {

return new IntegerCaseDocument ();

}



/**Méthode retournant l'entier*/

public int getInt () {

try{

return
Integer.parseInt ( super.getText().trim() ); //éliminer les blancs en
début et fin de chaine

}

catch ( Exception e ){

return 0;

}

}



/**Méthode affectant l'entier*/

public void setInt ( int entier ) {



super.setText ( "" + entier );

}



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++) {



if ( i < tailleMax ){

switch ( upper[i] ){

case '0':

case '1':

case '2':

case '3':

case '4':

case '5':

case '6':

case '7':

case '8':


case
'9': tempo = tempo + upper [i];



break;

default:



tempo = tempo + "";

}

}

else

tempo = tempo + "";



}



super.insertString(offs, tempo, a);

}

}

/* (non-Javadoc)

* @see java.awt.event.FocusListener#focusGained(java.awt.event.FocusEvent)

*/

public void focusGained(FocusEvent e) {

// TODO Auto-generated method stub



}



/* (non-Javadoc)

* @see java.awt.event.FocusListener#focusLost(java.awt.event.FocusEvent)

*/

public void focusLost(FocusEvent e) {

if ( this.getInt() > valMax )

this.setInt ( valMax );

else if ( this.getInt () < valMin )

this.setInt ( valMin );

};

}


C'est une classe qui permet de ne saisir que des chiffres et qui me permet de limitter la valeur max et min.



Merci de me donner un coup de main pour ajouter le textListenner qui me
permettrai de faire changer une case à cocher dans le cas où la valeur
de mon JIntegerField serait modifiée.




nataS
0
Rejoignez-nous