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 :

Raffraichissement JList après ajout


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Ingénieur Informatique et Réseaux
    Inscrit en
    Avril 2011
    Messages
    232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Informatique et Réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 232
    Par défaut Raffraichissement JList après ajout
    Bonjour,

    je travaille avec NetBeans et sa gestion du Binding.

    J'ai un petit problème de raffraichissement:

    Un objet "Exercise" contient une liste d'objet "Evolution".
    J'ai bindé sur une JList cette liste de mon exercice.

    J'ai un bouton qui me rajoute une "Evolution" dans la liste de mon objet.

    Je lance mon application avec une liste vide puis je clique sur le bouton.
    L'objet est bien rajouté mais la JList n'affiche rien.

    J'ai donc mis un "maJList.updateUI()" après l'ajout de mon "Evolution" et j'ai une exception qui sort :
    java.lang.IndexOutOfBoundsException: Index: 0, Size: 0

    Une exception comme celle là sur une methode qui doit tous redessiner me parait bizard. Est-ce normal? Si oui, comment je peux faire pour raffraichir ma JList et qu'elle affiche ma liste d'objet "Evolution"?


    Merci d'avance.

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Il nous faudrait le code minimal compilable reproduisant le problème (nettoyé de tout code superflu).
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  3. #3
    Membre éclairé
    Homme Profil pro
    Ingénieur Informatique et Réseaux
    Inscrit en
    Avril 2011
    Messages
    232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Informatique et Réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 232
    Par défaut
    Merci pour ta réactivité, voici mon code:

    Classe Exercise:
    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
    package testframe;
     
    import java.util.ArrayList;
    import java.util.List;
     
    public class Exercise {
        private List<Evolution> evlutionList;
     
        public Exercise() {
            this.evlutionList = new ArrayList<Evolution>();
        }
     
        public List<Evolution> getEvlutionList() {
            return evlutionList;
        }
     
        public void setEvlutionList(List<Evolution> evlutionList) {
            this.evlutionList = evlutionList;
        }
    }
    Classe Evolution:
    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
    package testframe;
     
    public class Evolution {
     
        private String name = "Evolution";
     
        public Evolution() {
        }
     
        @Override
        public String toString() {
            return name;
        }
     
    }
    Ma Frame:
    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
    package testframe;
     
    public class TestJFrame extends javax.swing.JFrame {
     
        public TestJFrame() {
            initComponents();
        }
        @SuppressWarnings("unchecked")
        // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
        private void initComponents() {
            bindingGroup = new org.jdesktop.beansbinding.BindingGroup();
     
            exercise1 = new testframe.Exercise();
            jButton1 = new javax.swing.JButton();
            jScrollPane2 = new javax.swing.JScrollPane();
            jList1 = new javax.swing.JList();
     
            setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
     
            jButton1.setText("jButton1");
            jButton1.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    jButton1ActionPerformed(evt);
                }
            });
     
            org.jdesktop.beansbinding.ELProperty eLProperty = org.jdesktop.beansbinding.ELProperty.create("${evlutionList}");
            org.jdesktop.swingbinding.JListBinding jListBinding = org.jdesktop.swingbinding.SwingBindings.createJListBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, exercise1, eLProperty, jList1);
            bindingGroup.addBinding(jListBinding);
     
            jScrollPane2.setViewportView(jList1);
     
            javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
            getContentPane().setLayout(layout);
            layout.setHorizontalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup()
                    .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 76, Short.MAX_VALUE)
                    .addComponent(jButton1)
                    .addGap(53, 53, 53))
            );
            layout.setVerticalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                    .addComponent(jScrollPane2)
                    .addContainerGap())
                .addGroup(layout.createSequentialGroup()
                    .addGap(120, 120, 120)
                    .addComponent(jButton1)
                    .addContainerGap(157, Short.MAX_VALUE))
            );
     
            bindingGroup.bind();
     
            pack();
        }// </editor-fold>                        
     
        private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
            // TODO add your handling code here:
            exercise1.getEvlutionList().add(new Evolution());
            System.out.println(jList1.getModel().getSize());
            jList1.updateUI();
        }                                        
     
        /**
         * @param args the command line arguments
         */
        public static void main(String args[]) {
            try {
                for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                    if ("Nimbus".equals(info.getName())) {
                        javax.swing.UIManager.setLookAndFeel(info.getClassName());
                        break;
                    }
                }
            } catch (ClassNotFoundException ex) {
                java.util.logging.Logger.getLogger(TestJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
            } catch (InstantiationException ex) {
                java.util.logging.Logger.getLogger(TestJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
            } catch (IllegalAccessException ex) {
                java.util.logging.Logger.getLogger(TestJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
            } catch (javax.swing.UnsupportedLookAndFeelException ex) {
                java.util.logging.Logger.getLogger(TestJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
            }
     
            java.awt.EventQueue.invokeLater(new Runnable() {
                public void run() {
                    new TestJFrame().setVisible(true);
                }
            });
        }
        // Variables declaration - do not modify                     
        private testframe.Exercise exercise1;
        private javax.swing.JButton jButton1;
        private javax.swing.JList jList1;
        private javax.swing.JScrollPane jScrollPane2;
        private org.jdesktop.beansbinding.BindingGroup bindingGroup;
        // End of variables declaration                   
    }

  4. #4
    Membre éclairé
    Homme Profil pro
    Ingénieur Informatique et Réseaux
    Inscrit en
    Avril 2011
    Messages
    232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Informatique et Réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 232
    Par défaut
    En faisant quelques tests supplémentaires, j'ai remarqué que le model de la JList avait bien 1 élément après le click sur le bouton mais l'élément n'est pas récupérable:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    System.out.println("Size model : " + jList1.getModel().getSize());
    System.out.println("model : " + jList1.getModel().getElementAt(0));
    J'ai dans la trace:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Size model : 1
    Exception in thread "AWT-EventQueue-0" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
    Savez-vous d'où peut venir le problème?

  5. #5
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Je ne connais pas l'API.
    J'ai lu la javadoc en diagonal et tu sembles faire les "bind" correctement. Je ne peux pas t'aider plus.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  6. #6
    Membre éclairé
    Homme Profil pro
    Ingénieur Informatique et Réseaux
    Inscrit en
    Avril 2011
    Messages
    232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Informatique et Réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 232
    Par défaut
    Merci pour ton aide.

    J'ai posté sur le forum offciel de netBeans, si j'ai une solution, je la reporterai ici.

    Merci encore.

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 12/03/2013, 23h11
  2. [jList]Comment ajouter les elemnts?
    Par Terminator dans le forum Composants
    Réponses: 19
    Dernier message: 07/04/2006, 21h36
  3. [JComboBox] Problème dans le PopMenu après ajout
    Par bidon dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 29/03/2005, 15h52
  4. Réponses: 6
    Dernier message: 10/07/2004, 12h19
  5. Kernel Panic après ajout d'une nouvelle partition
    Par GLDavid dans le forum Administration système
    Réponses: 6
    Dernier message: 25/06/2004, 16h47

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