Systeme Expert!!!!

albatrossa Messages postés 7 Date d'inscription samedi 13 octobre 2007 Statut Membre Dernière intervention 7 avril 2008 - 6 déc. 2007 à 19:55
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 - 6 déc. 2007 à 20:50
bonjour a tous,
voila je suis debutante en java, enfin pas debutante je n'y connait rien.
mon prof a exigé JAVA pour faire un petit systeme expert avec un moteur d'inference. et donc j'ai pensé a faire dans mon JFrame, des JTextField pour saisir les faits et regles, des JButton et des  JList pour qu'a chaque fois que je clique sur le bouton correspondant  la regle ou le fait  que j'introduit s'affiche dans la liste,
puis a partir de ces listes que les algo des chainages avant et arriere conclueront le resultat.
l'idée je l'ai, mais la façon de le faire!!! aucune idée. je suis bloquée tout au debut.
j'arrive meme pas a remplir ma liste.
j'ai declarer un DefaultListModel,
avec :
model.addElement(text1.getText());
list1.setModel(model);

mais sa ne marche pas!!!!

regarder ce qu'il m'affiche comme erreur :

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at form1$1.actionPerformed(form1.java:138)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1849)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2169)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
    at java.awt.Component.processMouseEvent(Component.java:5501)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3135)
    at java.awt.Component.processEvent(Component.java:5266)
    at java.awt.Container.processEvent(Container.java:1966)
    at java.awt.Component.dispatchEventImpl(Component.java:3968)
    at java.awt.Container.dispatchEventImpl(Container.java:2024)
    at java.awt.Component.dispatchEvent(Component.java:3803)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3892)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)
    at java.awt.Container.dispatchEventImpl(Container.java:2010)
    at java.awt.Window.dispatchEventImpl(Window.java:1778)
    at java.awt.Component.dispatchEvent(Component.java:3803)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
    at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)

moi j'ai rien compris et vous???
que doit je faire s'il vous plait.

3 réponses

Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
6 déc. 2007 à 20:04
Salut,

ton erreur peut venir d'une des 3 variables, soit model, soit text1, ou encore list1.... donnes plus de code stp

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
0
albatrossa Messages postés 7 Date d'inscription samedi 13 octobre 2007 Statut Membre Dernière intervention 7 avril 2008
6 déc. 2007 à 20:27
enfait je travaille sur une classe visuelle donc je crée mes conroles a partir d'une palette et ils sont instancier automatiquement.
les lists et texts sont normalement generés automatiquement. donc je ne pense pas qu'il sont la cause de l'ereur!!
bon pour le model:
 private DefaultListModel model;

voila la methode du boutton :
private JButton getBouton1() {
        if (bouton1 == null) {
            bouton1 = new JButton();
            bouton1.setBounds(new Rectangle(225, 30, 134, 32));
            bouton1.setText("Ajouer le fait");
            bouton1.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent e) {
                    //list1 = new JList(model);
                    if (text1.getText()!="")
                    {
                        model.addElement(text1.getText());
                        list1.setModel(model);
                       
                    }
                }
            });
           
        }
        return bouton1;
       
    }
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
6 déc. 2007 à 20:50
Salut,

"je crée mes conroles a partir d'une palette et ils sont instancier automatiquement."
dans ce cas tu n'es pas censé utiliser directement ta variable... tu devrais plus utiliser le getter associé.
exemple :
private JButton getBouton1() {
    if (bouton1 = = null) {
        bouton1 = new JButton();
        bouton1.setBounds(new Rectangle(225, 30, 134, 32));
        bouton1.setText("Ajouer le fait");
        bouton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent e) {
                if ( getText1() .getText()! ="") {
                    model.addElement(getText1().getText());
                    getList1().setModel(model);
                }
            }
        });   
    }
    return bouton1;
}
ainsi tu tassure que l'objet ne peut être null... maintenant si cela ne règle pas le problème (en tout cas il risque d'en éviter) il ne reste que le model...

le mieux serait de procéder ainsi :
[...]
private JList getList1() {
    if(list1 = = null) {
       list1 = new JList();
       list1.setModel(new DefaultListModel());//tu t'assure que le model ne puisse pas etre null ou d'un autre type
       [...]
    }
    return list1;
}
[...]
private JButton getBouton1() {

    if (bouton1 == null) {

        bouton1 = new JButton();

        bouton1.setBounds(new Rectangle(225, 30, 134, 32));

        bouton1.setText("Ajouer le fait");

        bouton1.addActionListener(new java.awt.event.ActionListener() {

            public void actionPerformed(java.awt.event.ActionEvent e) {

                if ( getText1() .getText()! ="") {
                    //récupération du model
                    DefaultListModel model = (DefaultListModel)getList1().getModel();

                    model.addElement( getText1() .getText());

                    getList1().setModel(model);

                }

            }

        });   

    }

    return bouton1;

}
[...]
autre chose en java il ne faut pas comparer un String avec ! ou = mais avec compareTo ou equals
exemple :
private JButton getBouton1() {

    if (bouton1 == null) {

        bouton1 = new JButton();

        bouton1.setBounds(new Rectangle(225, 30, 134, 32));

        bouton1.setText("Ajouer le fait");

        bouton1.addActionListener(new java.awt.event.ActionListener() {

            public void actionPerformed(java.awt.event.ActionEvent e) {

                if ( !getText1() .getText().equals("")) {

                    //récupération du model

                    DefaultListModel model = (DefaultListModel)getList1().getModel();

                    model.addElement(getText1().getText());

                    getList1().setModel(model);

                }

            }

        });   

    }

    return bouton1;

}
------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
0
Rejoignez-nous