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 :

control d'un champ de text avec java


Sujet :

AWT/Swing Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2006
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 40
    Points : 26
    Points
    26
    Par défaut control d'un champ de text avec java
    j'ai un champ de text et un bouton
    au debut le bouton est invisible alors je veut dés j'ecrit qq chose dans le champ de text le bouton sera visible et l'orsque je l'eface alors le bouton revient invisible
    je cherche en java un solution pour faire cela
    merci

  2. #2
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Si tu utilises un JTextField alors il te faut mettre un DocumentListener sur le document contenu dans le champs texte (myTextField.getDocument()). Tu recevras alors les differents evenements d'edition.

    Si tu utilises un JFormattedTextField tu peux aussi utiliser un PropertyChangeListener sur la propriete "value". Attention en general cette propriete n'est modifiee que quand le composant perd le focus (donc pas pendant l'edition).
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 9
    Points : 9
    Points
    9
    Par défaut
    Bonjour,

    Pour ma part j'utiliserais ce genre de code :


    // Création des JTextField et JButton :
    final JTextField jText = new JTextField("");
    final JButton jButton = new JButton("monBouton");

    // Placement dans le panneau principal des éléments :
    jText.setBounds(5,5,tv.getWidth()-110,20);
    jButton.setBounds(jText.getX()+jText.getWidth()+5,jText.getY(),90,20);

    // Forcer le bouton à être invisible au début : (car le champ est vide)
    jButton.setVisible(false);

    // Ajout d'un écouteur sur le champ de texte :
    jText.addCaretListener(new CaretListener() {

    public void caretUpdate(CaretEvent arg0)
    {
    if ( !jText.getText().equals("") )
    {
    jButton.setVisible(true);
    }
    else
    {
    jButton.setVisible(false);
    }
    }

    });

    // Accrochage des deux éléments au panneau principal :
    jp.add(jText);
    jp.add(jButton);
    J'espère que le code est suffisament propre pour ne pas nécessiter plus de commentaires. Après bien sûr tu peux t'amuser à créer une classe spécifique de boutons réagissant à différents types d'évênements mais pour le moment, cette solution fonctionne.

    Bonne journée.

  4. #4
    Membre chevronné
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 413
    Points : 1 993
    Points
    1 993
    Par défaut
    Bonjour,

    La solution avec le CaretListener n'est pas conseillé même si elle fonctionne. En effet cette classe est prévue pour "écouter" les modifications (position) du chariot (caret).

    +1 pour bouye

    C'est la méthode que je conseille car elle est plus "propre" du point de vue du concept "MVC" de Swing.
    Bien le bonjour chez vous
    Jowo

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 9
    Points : 9
    Points
    9
    Par défaut
    Merci pour la remarque. Je vais suivre vos conseils.

    Bonne journée.

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 9
    Points : 9
    Points
    9
    Par défaut
    Désolé, c'est juste pour savoir si j'ai bien compris le principe. C'est avec ce type d'écouteur qu'il faut remplacer le caret ?

    jText.getDocument().addDocumentListener(new DocumentListener() {

    public void removeUpdate(DocumentEvent arg0) {
    if ( jText.getText().equals("") )
    {
    jButton.setVisible(false);
    }
    }

    public void insertUpdate(DocumentEvent arg0) {
    if ( !jText.getText().equals("") )
    {
    jButton.setVisible(true);
    }
    }

    public void changedUpdate(DocumentEvent arg0) {

    }

    });
    Merci beaucoup.

  7. #7
    Nouveau membre du Club
    Inscrit en
    Mars 2006
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 40
    Points : 26
    Points
    26
    Par défaut
    merci a vous

  8. #8
    Membre chevronné
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 413
    Points : 1 993
    Points
    1 993
    Par défaut
    Voici un exemple:
    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
     
    /*
     * Created on 27.04.2006
     *
     * To change the template for this generated file go to
     * Window>Preferences>Java>Code Generation>Code and Comments
     */
    package ch.jowo;
     
    import java.awt.BorderLayout;
    import java.awt.Component;
    import java.awt.GridLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.KeyEvent;
     
    import javax.swing.BorderFactory;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JTextField;
    import javax.swing.event.DocumentEvent;
    import javax.swing.event.DocumentListener;
     
    public class TestApp implements ActionListener {
     
        private final JButton button = new JButton("OK");
        private final JTextField text = new JTextField();
     
        public Component createComponents() {
            button.setEnabled(false);
            button.setMnemonic(KeyEvent.VK_I);
            button.addActionListener(this);
     
            text.getDocument().addDocumentListener(
                    new DocumentListener() {
     
                        public void insertUpdate(DocumentEvent e) {
                            button.setEnabled((e.getDocument().getLength() > 0));                        
                        }
     
                        public void removeUpdate(DocumentEvent e) {
                            button.setEnabled((e.getDocument().getLength() > 0));                        
                        }
     
                        public void changedUpdate(DocumentEvent e) {
                            // TODO Auto-generated method stub
                        }                    
                    }                
            );
     
            /*
             * An easy way to put space between a top-level container
             * and its contents is to put the contents in a JPanel
             * that has an "empty" border.
             */
            JPanel pane = new JPanel(new GridLayout(0, 1));
            pane.add(button);
            pane.add(text);
            pane.setBorder(BorderFactory.createEmptyBorder(
                                            30, //top
                                            30, //left
                                            10, //bottom
                                            30) //right
                                            );
     
            return pane;
        }
     
        public void actionPerformed(ActionEvent e) {
            ;
        }
     
        /**
         * Create the GUI and show it.  For thread safety,
         * this method should be invoked from the
         * event-dispatching thread.
         */
        private static void createAndShowGUI() {
            //Set the look and feel.
     
            //Make sure we have nice window decorations.
            JFrame.setDefaultLookAndFeelDecorated(true);
     
            //Create and set up the window.
            JFrame frame = new JFrame("Test Application: Contrôle d'un champ");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
            TestApp app = new TestApp();
            Component contents = app.createComponents();
            frame.getContentPane().add(contents, BorderLayout.CENTER);
     
            //Display the window.
            frame.pack();
            frame.setVisible(true);
        }
     
     
        /**
         * @param args
         */
        public static void main(String[] args) {
            //Schedule a job for the event-dispatching thread:
            //creating and showing this application's GUI.
            javax.swing.SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    createAndShowGUI();
                }
            });
        }
     
    }
    Bien le bonjour chez vous
    Jowo

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

Discussions similaires

  1. basculer entre les champs de texte avec les flèches du clavier
    Par limy9 dans le forum Développement Web en Java
    Réponses: 2
    Dernier message: 24/01/2011, 15h49
  2. Annimation texte avec JAVA
    Par crespoo dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 26/07/2010, 16h53
  3. Transfert d'un fichier texte avec java
    Par mokhtarmaroc dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 25/08/2007, 10h58
  4. Un champ de texte avec plusieurs couleurs
    Par Robert Dumarais dans le forum Flash
    Réponses: 3
    Dernier message: 15/03/2007, 21h16
  5. Champ de text avec SDL.
    Par Postfsb dans le forum SDL
    Réponses: 5
    Dernier message: 05/07/2006, 14h55

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