Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
932 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Limiter la taille d'un champ texte, je deviens fou

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Limiter la taille d'un champ texte, je deviens fou

n°271866
belgique
Posté le 17-12-2002 à 23:08:25  profilanswer
 

Ca à l'air tout bête mais je cherche et je suis fatigué et je trouve pas :'(. Enfin bref, je fais un jtextfield et j'aimerais qu'il y ait max 8 caractères écrivables.


---------------
Belgian connection
mood
Publicité
Posté le 17-12-2002 à 23:08:25  profilanswer
 

n°271879
HappyHarry
Posté le 18-12-2002 à 00:00:48  profilanswer
 

je dirais que tu dois ajouter un KeyListener et surveiller la longueur du texte a chaque touches pressée

n°271886
belgique
Posté le 18-12-2002 à 00:54:20  profilanswer
 

carrément, moi qui pensait qu'on pouvais faire un truc plus simple  :cry:


---------------
Belgian connection
n°271887
HappyHarry
Posté le 18-12-2002 à 00:55:52  profilanswer
 

belgique a écrit :

carrément, moi qui pensait qu'on pouvais faire un truc plus simple  :cry:  


 
ben g fait comme toi sans doute ... lu la doc, rien vu qui ressemblait a ca alors j'ai pensé a ca ... c tout
 
et pis c pas la mort hein

n°271896
belgique
Posté le 18-12-2002 à 01:32:22  profilanswer
 

Bah ,j'ai du mal là, ça fait 2 semaines que j'essaie d'apprendre un peu le java et tout m'est fort nouveau .
En plus j'ai plus emacs ni le psychanalyst qui va avec  :cry: .
 
Je dois apprendre le java, faire un réseau de neurone avec , faire ma première interface graphique de ma vie, puis faire un projet de bases de données tjs en java et j'arrive même pas à installer ce fichu driver  :cry:  
 


Message édité par belgique le 18-12-2002 à 01:33:39

---------------
Belgian connection
n°271921
Prince2Lu
Posté le 18-12-2002 à 09:02:55  profilanswer
 

[:necris] bonne chance ...

n°271922
gfive
Posté le 18-12-2002 à 09:04:52  profilanswer
 

bah, normalement, si tu voulais VRAIMENT respecter le modèle object de Swing, il te faudrait créer une sous-classe de Document, qui aurait une taille limitée, genre :  
 
 

Code :
  1. import javax.swing.text.AttributeSet;
  2. import javax.swing.text.DefaultStyledDocument;
  3. import javax.swing.text.BadLocationException;
  4. import java.awt.Toolkit;
  5. public class LimitedStyledDocument extends DefaultStyledDocument {
  6.   private int maxCharacters;
  7.   public static final int MAXCHARS = 140;
  8.  
  9.   private MyDocListener listener;
  10.   private Object thrower; 
  11.   public LimitedStyledDocument(Object thrower, int maxChars, MyDocListener listener) {
  12.     maxCharacters = maxChars;
  13.     this.listener = listener;
  14.     this.thrower = thrower;
  15.   }
  16.  
  17.   public LimitedStyledDocument(Object thrower, MyDocListener listener) {
  18.     maxCharacters = MAXCHARS;
  19.     this.listener = listener;
  20.     this.thrower = thrower;
  21.   }
  22.  
  23.   public void insertString(int offs, String str, AttributeSet a) throws BadLocationException {
  24.    
  25.     if ((getLength() + str.length()) <= maxCharacters)
  26.       super.insertString(offs, str, a);
  27.     else {
  28.       Toolkit.getDefaultToolkit().beep();
  29.       listener.textTooLong(thrower, maxCharacters);
  30.     }
  31.   }
  32. }

 
 
 
et une interface :  
 

Code :
  1. public interface MyDocListener {
  2.   public void textTooLong(Object thrower, int maxcars);
  3. }


 
 
Ensuite, tu fait :  

Code :
  1. JTextField tf = new JTextField(8);
  2. tf.setDocument(new LimitedStyledDocument(unObjet, 8, unListener));


 
Quand la longueur de texte dépasse ce que tu as demandé, ça doit faire un bip, et appeller la méthode 'textTooLong' de ton listener.
 
C'est pas la méthode la plus simple, mais c'est "la bonne" dans l'esprit : le JTextField, il est pas sensé savoir ce qu'il affiche : on lui demande d'afficher le contenu d'un document, lui, il affiche...Par contre, c'est au document de connaître et de faire respecter ses limitattions...
 
ouala ouala..


Message édité par gfive le 18-12-2002 à 09:05:25
n°271962
HappyHarry
Posté le 18-12-2002 à 10:35:19  profilanswer
 

gfive a écrit :

bah, normalement, si tu voulais VRAIMENT respecter le modèle object de Swing, il te faudrait créer une sous-classe de Document, qui aurait une taille limitée, genre :  
 
 

Code :
  1. import javax.swing.text.AttributeSet;
  2. import javax.swing.text.DefaultStyledDocument;
  3. import javax.swing.text.BadLocationException;
  4. import java.awt.Toolkit;
  5. public class LimitedStyledDocument extends DefaultStyledDocument {
  6.   private int maxCharacters;
  7.   public static final int MAXCHARS = 140;
  8.  
  9.   private MyDocListener listener;
  10.   private Object thrower; 
  11.   public LimitedStyledDocument(Object thrower, int maxChars, MyDocListener listener) {
  12.     maxCharacters = maxChars;
  13.     this.listener = listener;
  14.     this.thrower = thrower;
  15.   }
  16.  
  17.   public LimitedStyledDocument(Object thrower, MyDocListener listener) {
  18.     maxCharacters = MAXCHARS;
  19.     this.listener = listener;
  20.     this.thrower = thrower;
  21.   }
  22.  
  23.   public void insertString(int offs, String str, AttributeSet a) throws BadLocationException {
  24.    
  25.     if ((getLength() + str.length()) <= maxCharacters)
  26.       super.insertString(offs, str, a);
  27.     else {
  28.       Toolkit.getDefaultToolkit().beep();
  29.       listener.textTooLong(thrower, maxCharacters);
  30.     }
  31.   }
  32. }

 
 
 
et une interface :  
 

Code :
  1. public interface MyDocListener {
  2.   public void textTooLong(Object thrower, int maxcars);
  3. }


 
 
Ensuite, tu fait :  

Code :
  1. JTextField tf = new JTextField(8);
  2. tf.setDocument(new LimitedStyledDocument(unObjet, 8, unListener));


 
Quand la longueur de texte dépasse ce que tu as demandé, ça doit faire un bip, et appeller la méthode 'textTooLong' de ton listener.
 
C'est pas la méthode la plus simple, mais c'est "la bonne" dans l'esprit : le JTextField, il est pas sensé savoir ce qu'il affiche : on lui demande d'afficher le contenu d'un document, lui, il affiche...Par contre, c'est au document de connaître et de faire respecter ses limitattions...
 
ouala ouala..


 
aussi, il est vrai :jap:

n°272072
belgique
Posté le 18-12-2002 à 12:23:31  profilanswer
 

je vais abandonner et nier l'histoire je crois :/ , je vais faire un test par après et faire des popups :/


---------------
Belgian connection
n°272074
belgique
Posté le 18-12-2002 à 12:24:04  profilanswer
 

Un grand merci quand même pour la longue explication, si j'ai le temps de bien le faireun autre fois , je le ferai.


---------------
Belgian connection

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Limiter la taille d'un champ texte, je deviens fou

 

Sujets relatifs
[ASP] Pb d'affichage des zones de texte [URGENT]lire le contenu d'un texte
insertion d'un " dans un champ text!![HTML JS] Texte qui clignote en rouge
Taille d'une image dans un tableau d'image[php] erreur mais ou ? je deviens fou merci d avance
A votre avis - Taille d'un email...une focntion pour recuperer la taille de l'applet ??
[PHP] Découper un texte en deux parties : la première devant faire ...[SQL] Champ contenant true ou false ?
Plus de sujets relatifs à : Limiter la taille d'un champ texte, je deviens fou


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR