Salut à tous,
Je souhaiterais savoir comment en java il est possible de régler le nombre de caractères que l'on peut saisir dans un JTextField. J'ai essayé setColumns(int columns) mais ça n'a eu auncun effet.
Merci d'avance pour vos réponses.
Salut à tous,
Je souhaiterais savoir comment en java il est possible de régler le nombre de caractères que l'on peut saisir dans un JTextField. J'ai essayé setColumns(int columns) mais ça n'a eu auncun effet.
Merci d'avance pour vos réponses.
Tu dois redéfinir le modèle de ton JTextField. Pour cela tu peux étendre soit la classe PlainDocument, soit la classe DocumentFilter. Tu associe ensuite le modèle à ton TextField via la méthode setDocument.
Voici un exemple de code :
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 /* * ModeleTextField.java * * Crée le 20 juin 2006, 23:04 * * */ package modeles; import java.awt.Toolkit; import javax.swing.text.AttributeSet; import javax.swing.text.BadLocationException; import javax.swing.text.DocumentFilter; /** * * @author Anis Frikha */ public class ModeleTextField extends DocumentFilter{ private int nbreCarac; /** Crée une nouvelle instance de ModeleTextField */ public ModeleTextField(int i) { nbreCarac=i; } public void insertString(DocumentFilter.FilterBypass fb, int offset, String str, AttributeSet attr) throws BadLocationException{ replace(fb, offset, 0, str, attr); } public void replace(DocumentFilter.FilterBypass fb, int offset, int length, String str, AttributeSet attrs) throws BadLocationException{ int newLength = fb.getDocument().getLength() - length + str.length(); if (newLength <= nbreCarac) { fb.replace(offset, length, str, attrs); } else { Toolkit.getDefaultToolkit().beep(); } } }
Oula, y'a plus simple ! Le setColumns permet de gérer la largeur du JTextField. Pour le nombre de caractère, c'est textField.setMaxLength ou un truc dans le genre... consulte la Javadoc![]()
J'ai beau chercher dans la javadoc ,je ne trouve rien qui ressemble à une méthode du genre "setMaxLength "![]()
Moi aussi c'est pareil j'ai pas trouvé cette méthode.
Sinon je n'arrive pas à utiliser ta classe afrikha. Voilà ce que je fais :
Le compilateur me dit que la méthode setDocument ne s'applique pas aux arguments ModeleTextField mais aux arguments Document.
Code : Sélectionner tout - Visualiser dans une fenêtre à part monTextField.setDocument(new ModeleTextField(2));
Oui c'est normal, me suis trompé. Essaye plutôt ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 AbstractDocument doc = (AbstractDocument) jTextField1.getDocument(); doc.setDocumentFilter(new ModeleTextField(20));
Partager