IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AWT/Swing Java Discussion :

Jtextfield perte controle saisie


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Informaticien
    Inscrit en
    Juin 2004
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gers (Midi Pyrénées)

    Informations professionnelles :
    Activité : Informaticien
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2004
    Messages : 184
    Par défaut Jtextfield perte controle saisie
    Bonjour à tous,

    j'ai défini un champ de saisie dans un jdialog d'après le code qui suit,
    il fonctionne correctement jusqu'à ce que je l'initialise avec un setValue()
    après plus rien, le listener semble perdu.

    je ne comprends pas pourquoi

    Merci d'avance pour votre aide.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    private JTextField_MaxLength getJTportoirPos(int x,int y,int width,int height) {
    		if (jTPortoirPos == null) {
    			jTPortoirPos =  new JTextField_MaxLength(2,1);	
    			jTPortoirPos.setBounds(new Rectangle(x, y,width,height));
    		}
    		return jTPortoirPos;
    	}
    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
     
    package udfs;
     
    import java.awt.Toolkit;
    import java.awt.event.FocusEvent;
    import java.awt.event.FocusListener;
     
    import javax.swing.JFormattedTextField;
    import javax.swing.text.AbstractDocument;
    import javax.swing.text.AttributeSet;
    import javax.swing.text.BadLocationException;
    import javax.swing.text.DocumentFilter;
     
    /**
     * choisit la taille et l'activation (par 0 ou 1) d'un controle saisie sur chiffre
     * 
     * @author ec  (basé sur le travail d'oma (developpez.com))
     *  
     */
    public class JTextField_MaxLength extends JFormattedTextField  implements FocusListener{
     
    	private static final long serialVersionUID = 1L;
     
    	/**
             * @author ec
             *
             *@param int maxLength
             *@param int controle Saisie   0= rien, 1= chiffre
             *
             */
    	public JTextField_MaxLength(int maxLength,int controleSaisie)
    	{
    		super();
    		init();
    		AbstractDocument doc = (AbstractDocument) getDocument();
    		doc.setDocumentFilter(new TextLimiter(maxLength,controleSaisie));
    	}
     
    	/**
            * do some additional initialisation
            */
    	private void init()
    	{
    	addFocusListener( this );
    	}
     
    	/**
            * setText selects when this is used in a table
            */
    	public void setText(String text)
    	{
    	super.setText(text);
    	selectAll();
    	}
     
    	/**
            * focus selects when this is used in a regular form
            * but should not select if something was already selected with setText
            */
    	public void focusGained(FocusEvent e)
    	{
    	if (getSelectionStart() == 0 && getSelectionEnd() == 0) selectAll();
    	}
     
     
    	public void focusLost(FocusEvent e) {
     
    	}
     
    	/**
             * Text limiter used to limit the number of characters of text fields
             * Should be used this way :
             *
             * AbstractDocument doc = (AbstractDocument) myTextComponent.getDocument();
             * doc.setDocumentFilter(new TextLimiter(maxLength));
             *
             * @author oma
             *
             */
    	private class TextLimiter extends DocumentFilter {
    		private int max;
    		private int ctrlSaisie;
     
    		public TextLimiter(int max,int ctrlSaisie) {
    			this.max = max;
    			this.ctrlSaisie = ctrlSaisie;
    		}
     
    		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();
    			boolean toutOk=true;
    			System.out.println("new length "+newLength+" et max "+max);
    			if (newLength <= max) {
    				//				controle saisie chiffre uniquement
    				if (ctrlSaisie==1)
    				{
    					if (UtilitairesDivers.isNumeric(str)==false)
    					{
    						toutOk=false;
    					}
    				}
    			}
    			else 
    			{
    				toutOk=false;
    			}
     
    			if (toutOk==true)
    			{
    				fb.replace(offset, length, str, attrs);	
    			}
    			else
    			{
    				Toolkit.getDefaultToolkit().beep();
    			}
    		}
    	}
     
    }

  2. #2
    Membre très actif
    Homme Profil pro
    Informaticien
    Inscrit en
    Juin 2004
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gers (Midi Pyrénées)

    Informations professionnelles :
    Activité : Informaticien
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2004
    Messages : 184
    Par défaut
    Résolu



    ben oui, j'utilisais setValue() au lieu de setText() pour initialiser......

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [JTextField] Limiter la saisie a des lettres.
    Par Cyborg289 dans le forum Composants
    Réponses: 4
    Dernier message: 16/09/2005, 10h40
  2. [C#.NET] Controle Saisie cellule du Datagrid
    Par lefebvse dans le forum Windows Forms
    Réponses: 2
    Dernier message: 21/04/2005, 14h56
  3. controle saisie
    Par star_light dans le forum C++
    Réponses: 14
    Dernier message: 15/03/2005, 19h19
  4. [JTextField] Filtre de saisie
    Par mr.t dans le forum Composants
    Réponses: 6
    Dernier message: 15/02/2005, 16h43
  5. [JTextField] filtrer la saisie
    Par Merfolk dans le forum Composants
    Réponses: 7
    Dernier message: 04/03/2004, 19h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo