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 