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

Composants Java Discussion :

autocalcul de deux JtextField


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Hind4Dev
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2014
    Messages
    428
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2014
    Messages : 428
    Par défaut autocalcul de deux JtextField
    j'ai besoin de calculer la somme de 2 JTextField mais automatiquement sans que je clic sur un bouton mais ça me donne toujours un 0

    voilà le 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
     
    Double cumul = 0.0;
     
    //txtRevP est le premier, ici j'envoi son contenu à cumul
    txtRevP.addKeyListener(new KeyAdapter() {
    			@Override
    			public void keyReleased(KeyEvent arg0) {
    				cumul += (Double) txtRevP.getValue();
    			}
    		});
     
    ...
    //txtRevM est le deuxième, je l'ajoute au cumul existant déjà
    txtRevM.addKeyListener(new KeyAdapter() {
    			@Override
    			public void keyReleased(KeyEvent arg0) {
    				cumul +=  (Double) txtRevM.getValue();
    				txtCumul.setValue(Double.toString(cumul));
    			}
    		});

  2. #2
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Août 2005
    Messages : 6 904
    Billets dans le blog
    54
    Par défaut
    Un truc comme ca devrait faire l'affaire :

    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
    public class Main {
     
        public static void main(String[] args) {
            SwingUtilities.invokeLater(Main::builSwingApp);
        }
     
        private static void builSwingApp() {
            final JTextField field1 = new JTextField();
            final JTextField field2 = new JTextField();
            final JLabel label = new JLabel();
            final DocumentListener valueUpdater = new DocumentListener() {
                @Override
                public void insertUpdate(DocumentEvent e) {
                    updateValues(field1, field2, label);
                }
     
                @Override
                public void removeUpdate(DocumentEvent e) {
                    updateValues(field1, field2, label);
                }
     
                @Override
                public void changedUpdate(DocumentEvent e) {
                    updateValues(field1, field2, label);
                }
            };
            field1.setPreferredSize(new Dimension(100, field1.getPreferredSize().height));
            field1.getDocument().addDocumentListener(valueUpdater);
            field2.setPreferredSize(new Dimension(100, field2.getPreferredSize().height));
            field2.getDocument().addDocumentListener(valueUpdater);
            label.setText("label");
            final JPanel root = new JPanel();
            root.add(field1);
            root.add(field2);
            root.add(label);
            final JFrame frame = new JFrame("Test");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setContentPane(root);
            frame.pack();
            frame.setVisible(true);
        }
     
        private static void updateValues(final JTextField field1, final JTextField field2, final JLabel label) {
            double result = 0;
            try {
                final String text1 = field1.getText();
                final double value1 = Double.parseDouble(text1);
                result += value1;
            } catch (NumberFormatException ex) {
                // @todo log warning.
            }
            try {
                final String text2 = field2.getText();
                final double value2 = Double.parseDouble(text2);
                result += value2;
            } catch (NumberFormatException ex) {
                // @todo log warning.
            }
            final String text = String.valueOf(result);
            label.setText(text);
        }
    }
    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
    Membre éclairé Avatar de Hind4Dev
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2014
    Messages
    428
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2014
    Messages : 428
    Par défaut
    ça ne fonctionne pas correctement celle là, je viens de la tester, elle donne un résultat faux chaque fois

  4. #4
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 096
    Par défaut
    Si, le code de Bouye a l'air de fonctionner parfaitement.

    En quoi, pour toi, cela ne fonctionne pas ?
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre éclairé Avatar de Hind4Dev
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2014
    Messages
    428
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2014
    Messages : 428
    Par défaut
    je pense à cause du code du main, moi je n'ai pas de main car c'est une JFrame secondaire alors comment j'écris ça?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SwingUtilities.invokeLater(Main::builSwingApp);
    je l'a met dans le constructeur? mais ce n'ai pas un main

  6. #6
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 096
    Par défaut
    Il te faudra dés lors modifier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private static void builSwingApp()
    Selon tes désires, mais le code fournis n'est qu'un exemple très complet et fonctionnel de ce que tu demandes. A toi de prendre le bout qui te manquait au départ, a savoir

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private static void updateValues(...)
    ainsi que le listener des composants et de la modifier/rajouter dans ce qui existe déjà de ton interface.
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Concaténer deux fichiers Ligne/Ligne avec SH
    Par guiltouf dans le forum Linux
    Réponses: 7
    Dernier message: 22/05/2007, 14h35
  2. Lancer deux sons en même temps...
    Par Julien_riquelme dans le forum API, COM et SDKs
    Réponses: 1
    Dernier message: 03/05/2003, 17h00
  3. Réponses: 5
    Dernier message: 25/03/2003, 19h43
  4. Eviter deux nombres identiques dans un tirage aléatoire
    Par moon tiger dans le forum Pascal
    Réponses: 5
    Dernier message: 25/11/2002, 09h57
  5. soustraire deux dates ?
    Par joejoe dans le forum SQL
    Réponses: 2
    Dernier message: 19/07/2002, 15h53

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