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 :

Probème instanciation + ActionPerform


Sujet :

AWT/Swing Java

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2012
    Messages : 51
    Par défaut Probème instanciation + ActionPerform
    Bonjour,

    J'ai un problème avec l'interface graphique de mon projet. J'ai une JComboBox et je souhaiterais que dès qu'il y a un changement dans la combobox les changements soit répercutées sur une autre combobox, pour cela j'utilise un actionPerform sur la première combo.

    Problème : Dans la méthode ActionPerform j'utilise une méthode d'une autre classe, j'ai donc l'objet de l'autre classe en tant qu'attribut et je l'instancie dès la première ligne de mon constructeur. Mais dès que je lance l'application j'ai une NULLPOINTEREXCEPTION car il ne reconnais pas l'instanciation fais au préalable.

    Voici le code de mon constructeur :

    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
    public SimulatorGui() throws ClassNotFoundException, SQLException {
            this.d = new Data();
            this.g = new Graph();
            initComponents();
            pool = Executors.newCachedThreadPool();
            prop = new Properties();
            fileProp = new File("settings");
            visitorsProportions = new LinkedList<>();
            tasks = new LinkedList<>();
            extract.setVisible(false);
            int row = 6;
            for (VisitorFactory.VisitorType type : VisitorFactory.VisitorType.values()) {
                GridBagConstraints labelConstraint = new GridBagConstraints();
                labelConstraint.gridx = 0;
                labelConstraint.gridy = row++;
                visitorsPanel.add(new JLabel(type.toString()), labelConstraint);
                GridBagConstraints spinnerConstraints = new GridBagConstraints();
                spinnerConstraints.gridx = 1;
                spinnerConstraints.gridy = labelConstraint.gridy;
                JSpinner spin = new JSpinner(new SpinnerNumberModel(0.0d, 0.0d, 100.0d, 0.5d));
                spin.addChangeListener(this);
                visitorsProportions.add(spin);
                visitorsPanel.add(spin, spinnerConstraints);
            }
            visitorsProportions.iterator().next().setEnabled(false);
     
            algoChoice.removeAllItems();
            for (Algorithm algo : Algorithm.values()) {
                algoChoice.addItem(algo);
            }
     
            simulationset.removeAllItems();
     
            for (Object s : d.ExtractAllSimulationGroup()) {
                simulationset.addItem(s);
            }
     
            runset.removeAllItems();
            try {
                Object[] o = d.ExtractAllSimulation(/*simulationset.getSelectedItem().toString()*/);
                for (int i=0; i<o.length-1; i++){
                    runset.addItem(o[i]);
                }
            }catch(SQLException e) {
                Logger.getLogger(SimulatorGui.class.getName()).log(Level.SEVERE, null, e);            
            }
            loadProperties();
            pack();
     
        }
    Dans la méthode initComponents() il y a l'ajout de l'actionPerformed au listener :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    simulationset.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    simulationsetActionPerformed(evt);
                }
            });
    et voici le code de mon actionPerformed :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    private void simulationsetItemStateChanged(java.awt.event.ItemEvent evt) {                                               
     
            runset.removeAllItems();
            try {
                Object[] o = d.ExtractAllSimulation(/*simulationset.getSelectedItem().toString()*/);
                for (int i=0; i<o.length-1; i++){
                    runset.addItem(o[i]);
                }
            }catch(SQLException e) {
                Logger.getLogger(SimulatorGui.class.getName()).log(Level.SEVERE, null, e);
            }
        }

    Merci d'avance de votre aide précieuse !

  2. #2
    Membre éclairé
    Homme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Août 2012
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 406
    Par défaut
    Citation Envoyé par freeway57 Voir le message
    Bonjour,

    J'ai un problème avec l'interface graphique de mon projet. J'ai une JComboBox et je souhaiterais que dès qu'il y a un changement dans la combobox les changements soit répercutées sur une autre combobox, pour cela j'utilise un actionPerform sur la première combo.

    Problème : Dans la méthode ActionPerform j'utilise une méthode d'une autre classe, j'ai donc l'objet de l'autre classe en tant qu'attribut et je l'instancie dès la première ligne de mon constructeur. Mais dès que je lance l'application j'ai une NULLPOINTEREXCEPTION car il ne reconnais pas l'instanciation fais au préalable.

    Voici le code de mon constructeur :

    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
    public SimulatorGui() throws ClassNotFoundException, SQLException {
            this.d = new Data();
            this.g = new Graph();
            initComponents();
            pool = Executors.newCachedThreadPool();
            prop = new Properties();
            fileProp = new File("settings");
            visitorsProportions = new LinkedList<>();
            tasks = new LinkedList<>();
            extract.setVisible(false);
            int row = 6;
            for (VisitorFactory.VisitorType type : VisitorFactory.VisitorType.values()) {
                GridBagConstraints labelConstraint = new GridBagConstraints();
                labelConstraint.gridx = 0;
                labelConstraint.gridy = row++;
                visitorsPanel.add(new JLabel(type.toString()), labelConstraint);
                GridBagConstraints spinnerConstraints = new GridBagConstraints();
                spinnerConstraints.gridx = 1;
                spinnerConstraints.gridy = labelConstraint.gridy;
                JSpinner spin = new JSpinner(new SpinnerNumberModel(0.0d, 0.0d, 100.0d, 0.5d));
                spin.addChangeListener(this);
                visitorsProportions.add(spin);
                visitorsPanel.add(spin, spinnerConstraints);
            }
            visitorsProportions.iterator().next().setEnabled(false);
     
            algoChoice.removeAllItems();
            for (Algorithm algo : Algorithm.values()) {
                algoChoice.addItem(algo);
            }
     
            simulationset.removeAllItems();
     
            for (Object s : d.ExtractAllSimulationGroup()) {
                simulationset.addItem(s);
            }
     
            runset.removeAllItems();
            try {
                Object[] o = d.ExtractAllSimulation(/*simulationset.getSelectedItem().toString()*/);
                for (int i=0; i<o.length-1; i++){
                    runset.addItem(o[i]);
                }
            }catch(SQLException e) {
                Logger.getLogger(SimulatorGui.class.getName()).log(Level.SEVERE, null, e);            
            }
            loadProperties();
            pack();
     
        }
    Dans la méthode initComponents() il y a l'ajout de l'actionPerformed au listener :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    simulationset.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    simulationsetActionPerformed(evt);
                }
            });
    et voici le code de mon actionPerformed :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    private void simulationsetItemStateChanged(java.awt.event.ItemEvent evt) {                                               
     
            runset.removeAllItems();
            try {
                Object[] o = d.ExtractAllSimulation(/*simulationset.getSelectedItem().toString()*/);
                for (int i=0; i<o.length-1; i++){
                    runset.addItem(o[i]);
                }
            }catch(SQLException e) {
                Logger.getLogger(SimulatorGui.class.getName()).log(Level.SEVERE, null, e);
            }
        }

    Merci d'avance de votre aide précieuse !
    De ce que j'ai pu voir je vois ce que tu veux faire à peu près est ce que tu aimerais charger le contenu de la 2ème JComboBox en fonction du contenu de la 1ère?

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2012
    Messages : 51
    Par défaut
    C'est exactement ça ! Mais je viens de réussir à trouver la solution, ma JCombobox était instancier mais rien n'étais sélectionné d'ou la NullPointerException.

    Du coup il faut rajouter cette ligne : simulationset.setSelectIndex(0) s'il y a quelque chose dans ma JCombobox ou simulationset.setSelectedIndex(-1) si elle est vide au préalable !

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

Discussions similaires

  1. [Reflection] Instancier un objet
    Par bl@st dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 28/10/2008, 11h09
  2. [POO] Instancier un objet avec le nom de la classe
    Par shinchun dans le forum Langage
    Réponses: 4
    Dernier message: 08/06/2006, 13h44
  3. Probème de type entre access et delphi
    Par samlerouge dans le forum Bases de données
    Réponses: 5
    Dernier message: 23/05/2004, 19h56
  4. [JButton] ActionListenner, ActionPerformed
    Par ArchFolken dans le forum Composants
    Réponses: 6
    Dernier message: 04/05/2004, 10h41
  5. [VB.NET] Instanciation objet (sur class perso.)
    Par DaxTaz dans le forum ASP.NET
    Réponses: 4
    Dernier message: 03/05/2004, 11h07

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