JTable + Controller

adrienr11vdv Messages postés 99 Date d'inscription jeudi 13 juillet 2006 Statut Membre Dernière intervention 16 avril 2009 - 22 févr. 2008 à 15:16
uhrand Messages postés 491 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 15 juillet 2012 - 25 févr. 2008 à 10:31
Bonjour à tous ,

je développe une appli avec des JTable mais je rencontre quelques soucis!


j'utilise une classe, connection a la bdd, une classe controller (gère les evenements de la classe Vue) et une classe Vue.


Voici la classe connection:
package Modele;


import java.sql.ResultSetMetaData;

import java.sql.SQLException;

import java.util.LinkedList;

import java.util.Vector;


import com.mysql.jdbc.ResultSet;


public class ListeEtudiants {

   

    /**

     *    

     * @throws SQLException

     * @throws SQLException

     */

    private Etudiant etu = new Etudiant();

   


   

    public Vector setColumName(String req) throws SQLException{

       

       

            ResultSet rs = Ressource.dataBase.getRst(req);

            ResultSetMetaData md = rs.getMetaData();

           

            Vector nomColonnes = new Vector();


            int colonnes = md.getColumnCount();

       

            for(int i=1; i<=colonnes; i++){

                nomColonnes.addElement(md.getColumnName(i));

            }

           

            return nomColonnes;

        }

       

        public Vector setData(String req) throws SQLException{

           

            ResultSet rs = Ressource.dataBase.getRst(req);

            ResultSetMetaData md = rs.getMetaData();

            int col = md.getColumnCount();

           

            Vector data = new Vector();

           

            while (rs.next()){

                Vector row = new Vector();

                for (int i=1; i<=col;i++){

                    row.addElement(rs.getObject(i));

                }

                data.addElement(row);

            }

        return data;       

    }

}

Voici la classe controller
package Controller;


import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;


import Vue.NewJPanel;


public class Control implements ActionListener {

   

    private NewJPanel  tab;

    public String req;

   

    public Control(NewJPanel tab){

        this.tab = tab;

        tab.getJCheckBox1().addActionListener(this);

        tab.getJCheckBox2().addActionListener(this);

    }

   

    @Override

    public void actionPerformed(ActionEvent act) {

        // TODO Auto-generated method stub

        Object src = act.getSource();

        if (src.equals(tab.getJCheckBox1())){

            if(tab.getJCheckBox1().isSelected() == true){

                System.out.println(" checkbox un est activée !!");

                 req = "SELECT utilisateur.* FROM utilisateur , prof
WHERE utilisateur.id_util = prof.id_util_prof order by utilisateur.nom,
utilisateur.prenom";

            }else{

                System.out.println(" checkbox un est desactivée !!");

            }

        }

        if (src.equals(tab.getJCheckBox2())){

            if(tab.getJCheckBox2().isSelected() == true){

                System.out.println(" checkbox2 un est activée !!");

                req = "SELECT utilisateur.* FROM utilisateur , etudiant
WHERE utilisateur.id_util = etudiant.id_util_etu order by
utilisateur.nom, utilisateur.prenom";

            }else{

                System.out.println(" checkbox2 un est desactivée !!");

            }

       

        }

       

    }


}


voici la classe Vue
package Vue;


import java.awt.Dimension;

import java.awt.event.MouseAdapter;

import java.awt.event.MouseEvent;

import java.sql.ResultSetMetaData;

import java.sql.SQLException;

import java.util.Vector;

import javax.swing.JCheckBox;


import javax.swing.WindowConstants;

import javax.swing.table.DefaultTableModel;

import javax.swing.table.TableModel;

import javax.swing.JFormattedTextField;

import javax.swing.JFrame;

import javax.swing.JOptionPane;

import javax.swing.JScrollPane;

import javax.swing.JTable;


import Controller.Control;

import Modele.ListeEtudiants;


import com.mysql.jdbc.ResultSet;


public class NewJPanel extends javax.swing.JPanel {

    private JScrollPane jScrollPane1;

    private JCheckBox jCheckBox1;

    private JCheckBox jCheckBox2;

    private JTable jTable1;

    private Control control;

    private String req ;


    /**

    * Auto-generated main method to display this

    * JPanel inside a new JFrame.

    */

    public static void main(String[] args) {

        JFrame frame = new JFrame();

        frame.getContentPane().add(new NewJPanel());

        frame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);

        frame.pack();

        frame.setVisible(true);

    }

   

    public NewJPanel() {

        super();

        initGUI();

        control = new Control(this);

    }

   


    private void initGUI() {

        try {

            setPreferredSize(new Dimension(400, 300));

            this.setLayout(null);

            {

                jScrollPane1 = new JScrollPane();

                this.add(jScrollPane1);

                this.add(getJCheckBox1());

                this.add(getJCheckBox2());

                jScrollPane1.setBounds(42, 25, 337, 183);

                {   

                    ListeEtudiants liste = new ListeEtudiants();

                   

                    jTable1 = new JTable(liste.setData(control.req),liste.setColumName(control.req));

                    jScrollPane1.setViewportView(jTable1);

                    jTable1.setPreferredSize(new java.awt.Dimension(334, 150));

                    jTable1.addMouseListener(new MouseAdapter() {

                        public void mouseClicked(MouseEvent evt) {

                            jTable1MouseClicked(evt);

                        }

                    });

                }

            }

        } catch (Exception e) {

            e.printStackTrace();

        }

    }

      

        public JCheckBox getJCheckBox1() {

            if(jCheckBox1 == null) {

                jCheckBox1 = new JCheckBox();

                jCheckBox1.setText("Prof");

                jCheckBox1.setBounds(42, 240, 101, 20);

                jCheckBox1.setSelected(true);

            }

            return jCheckBox1;

        }

       

        public JCheckBox getJCheckBox2() {

            if(jCheckBox2 == null) {

                jCheckBox2 = new JCheckBox();

                jCheckBox2.setText("Etu");

                jCheckBox2.setBounds(211, 240, 121, 20);

            }

            return jCheckBox2;

        }


        public String getReq() {

            return req;

        }

       

}


et voici l'erreur

java.lang.NullPointerException

    at Vue.NewJPanel.initGUI(NewJPanel.java:77)

    at Vue.NewJPanel.(NewJPanel.java:59)

    at Vue.NewJPanel.main(NewJPanel.java:51)


merci d'avance pour votre aide!

Adrien

1 réponse

uhrand Messages postés 491 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 15 juillet 2012 9
25 févr. 2008 à 10:31
Tu doit créer control avant initGUI !!!
        control = new Control(this);
        initGUI();
0
Rejoignez-nous