Salut,
oki voici une classe d'exemple avec une micro IHM integrant une fenetre et 3 JTextFields - le premier met tous les char en majuscule - le deuxieme ne prend que des entiers - le troisieme laisse le traitement classic du JTextField ATTENTION CODE FAIT POUR LE JDK 1.5 A CAUSE DE L'ENUM:
import java.awt.Dimension;
import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JTextField;
public class Test extends JFrame{ private static final long serialVersionUID = 1802199483736051124L;
public Test(){ JPanel pane = new JPanel(); //creation des zones de texte JTextField txtUpperCase = new JTextField(); txtUpperCase.setPreferredSize(new Dimension(200, 20));//pour bien voir :P txtUpperCase.setDocument(new TextPlainDocument(TextPlainDocument.CaseType.UPPER));//ajout du document upperCase pane.add(txtUpperCase); JTextField txtDigitCase = new JTextField(); txtDigitCase.setPreferredSize(new Dimension(200, 20));//pour bien voir :P txtDigitCase.setDocument(new TextPlainDocument(TextPlainDocument.CaseType.DIGIT));//ajout du document digitCase pane.add(txtDigitCase); JTextField txtNormal = new JTextField(); txtNormal.setPreferredSize(new Dimension(200, 20));//pour bien voir :P //sinon on peut aussi faire mais c'est pas franchement utile //txtNormal.setDocument(new TextPlainDocument(null)); pane.add(txtNormal); setContentPane(pane); setDefaultCloseOperation(EXIT_ON_CLOSE); setSize(220, 110); setLocationRelativeTo(null); }
public static void main(String[] args) { new Test().setVisible(true); }
}
maintenant voici la classe redefinissant le modele d'insertion du JTextField (ref javadoc JTextField):
import java.awt.Toolkit;
import javax.swing.text.AttributeSet; import javax.swing.text.BadLocationException; import javax.swing.text.PlainDocument;
public class TextPlainDocument extends PlainDocument { private static final long serialVersionUID = 6695375905302469591L;
public enum CaseType{ DIGIT, UPPER; } private CaseType caseType = null; public TextPlainDocument(CaseType caseType){ this.caseType = caseType; } public void insertString(int offs, String str, AttributeSet a) throws BadLocationException { if(caseType == null){ super.insertString(offs, str, a); return ; } if (str == null) return;
switch(caseType){ case UPPER: char[] upper = str.toCharArray(); for (int i = 0; i < upper.length; i++) { upper[i] = Character.toUpperCase(upper[i]); } super.insertString(offs, new String(upper), a); break; case DIGIT: char[] tmp = str.toCharArray(); String digit = ""; for (int i = 0; i < tmp.length; i++) { if(Character.isDigit(tmp[i])) digit += tmp[i]; else Toolkit.getDefaultToolkit().beep(); } super.insertString(offs, digit, a); break; } } }
------------------------------------ "On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."
WORA
|