Partage
  • Partager sur Facebook
  • Partager sur Twitter

Rafraichissement d'une jtable

    24 mai 2011 à 15:47:34

    Hello,


    J'ai beau regardé dans le forum, je ne vois pas de réponse qui répond à ma question :(

    Vla mon problème:

    J'ai une belle jtable qui affiche mon stock au complet au chargement de la Jframe.

    Dans cette Jframe, j'ai des JradioButton (4) regroupé dans un jbuttonGroup

    Ces boutons vont me permettre de filtrer ma jtable... enfin, c'est le but que je recherche mais je ne vois pas comment faire.

    Mais boutons répondent en mode console et j'ai lu quelque part la commande fireTableDataChanged() mais je ne vois vraiment pas comment l'insérer....

    Voila d'abord à quoi ressemble ma fenêtre, si cela peut aider :

    Image utilisateur

    voila le code.
    Premiere partie (la vue)

    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
    
    package javaallocation;
    
    import java.awt.*;
    import java.awt.event.ActionListener;
    import java.util.ArrayList;
    import javax.swing.*;
    import javax.swing.border.*;
    import javax.swing.table.DefaultTableModel;
    
    
    /**
     *
     * @author Fabian
     */
    public class PanneauRecherche extends JPanel {
    
        private Stock monStock;
        private int idCourant=-1;
    
        private JLabel Titre = new JLabel();
        Font font = new Font("Arial",Font.BOLD,15);
    
        private JTextField rechercherMot = new JTextField (25);
        private JButton BoutonOK = new JButton("OK");
        private JButton BoutonFermer = new JButton ("Fermer");
        private JTable Resultat = new JTable();
        private ArrayList <Produit> articleTrouve ;
    
        private JRadioButton jr1 = new JRadioButton("Tous");
        private JRadioButton jr2 = new JRadioButton("Livre");
        private JRadioButton jr3 = new JRadioButton("Logiciel");
        private JRadioButton jr4 = new JRadioButton("Personnalisé");
        private ButtonGroup bg = new ButtonGroup();
        
        Border blackline, raisedetched, loweredetched,
                   raisedbevel, loweredbevel, empty;
        Border paneEdge = BorderFactory.createEmptyBorder(0,10,100,10);
        TitledBorder titled;
    
        JPanel panneauLabelTitre = new JPanel (new GridLayout(1,1));
        JPanel panneauLabelRecherche = new JPanel (new GridLayout(1,3,0,2));
        JPanel panneauLabelTable = new JPanel (new GridLayout(5,1,0,2));
        JPanel panneauBouton = new JPanel (new GridLayout(1,2,0,2));
        JPanel panneauQuitter = new JPanel (new GridLayout(1,1,0,2));
    
        public PanneauRecherche( Stock Data) {
            
            int i=0;            
            this.monStock = Data;
    
    
             /* bordures de différents type */
    
            blackline = BorderFactory.createLineBorder(Color.yellow);
            raisedetched = BorderFactory.createEtchedBorder(EtchedBorder.RAISED);
            loweredetched = BorderFactory.createEtchedBorder(EtchedBorder.LOWERED);
            raisedbevel = BorderFactory.createRaisedBevelBorder();
            loweredbevel = BorderFactory.createLoweredBevelBorder();
            empty = BorderFactory.createEmptyBorder();
    
            setLayout (null);
    
            /* Création du titre */
    
            /* Initialisation du titre */
    
            Titre.setText("<html><font color = #CD853F ><u>Gestion du Stock Informatique</u></font></html>");
            Titre.setFont(font);
            Titre.setBorder(raisedetched);
            Titre.setHorizontalAlignment(SwingConstants.CENTER);
            //Titre.setForeground(new Color(255,35,35));
    
            panneauLabelTitre.add(this.Titre);
            panneauLabelTitre.setBackground(Color.black);
            panneauLabelTitre.setBounds(5, 2, 625, 40);
            
            Box hCode = Box.createHorizontalBox();
            hCode.add(new JLabel ("Mot à chercher: "));
            hCode.add(Box.createHorizontalStrut(8));
            rechercherMot.setBorder(loweredbevel);
            hCode.add(this.rechercherMot);
            hCode.add(Box.createHorizontalStrut(15));
            hCode.add(this.BoutonOK);
            panneauLabelRecherche.add(hCode);
            panneauLabelRecherche.setBounds(8,50,620,23);
    
            bg.add(jr1);
            bg.add(jr2);
            bg.add(jr3);
            bg.add(jr4);
            jr1.setBackground(Color.yellow);
            jr2.setBackground(Color.yellow);
            jr3.setBackground(Color.yellow);
            jr4.setBackground(Color.yellow);
            panneauBouton.add(jr1);
            panneauBouton.add(jr2);
            panneauBouton.add(jr3);
            panneauBouton.add(jr4);
            titled = BorderFactory.createTitledBorder(raisedetched,
                                   "Filtre de recherche");
            panneauBouton.setBorder(titled);
            panneauBouton.setBackground(Color.yellow);
    
            panneauQuitter.setBounds(290,330,75,23);
            panneauQuitter.add(BoutonFermer);
    
    
            //Les titres des colonnes       
    
            add(panneauLabelTitre);
            add(panneauLabelRecherche);
            add(panneauQuitter);
            add(panneauLabelTable);      
           
    
            Chargement();
        }
    
    
    
        /**
         * @return the monStock
         */
        public Stock getMonStock() {
            return monStock;
        }
    
        /**
         * @param monStock the monStock to set
         */
        public void setMonStock(Stock monStock) {
            this.monStock = monStock;
        }
    
        /**
         * @return the idCourant
         */
        public int getIdCourant() {
            return idCourant;
        }
    
        /**
         * @param idCourant the idCourant to set
         */
        public void setIdCourant(int idCourant) {
            this.idCourant = idCourant;
        }
    
        /**
         * @return the Titre
         */
        public JLabel getTitre() {
            return Titre;
        }
    
        /**
         * @param Titre the Titre to set
         */
        public void setTitre(JLabel Titre) {
            this.Titre = Titre;
        }
    
        /**
         * @return the rechercherMot
         */
        public JTextField getRechercherMot() {
            return rechercherMot;
        }
    
        /**
         * @param rechercherMot the rechercherMot to set
         */
        public void setRechercherMot(JTextField rechercherMot) {
            this.rechercherMot = rechercherMot;
        }
    
        /**
         * @return the Resultat
         */
        public JTable getResultat() {
            return Resultat;
        }
    
        /**
         * @param Resultat the Resultat to set
         */
        public void setResultat(JTable Resultat) {
            this.Resultat = Resultat;
        }
    
        /**
         * @return the articleTrouve
         */
        public ArrayList<Produit> getArticleTrouve() {
            return articleTrouve;
        }
    
        /**
         * @param articleTrouve the articleTrouve to set
         */
        public void setArticleTrouve(ArrayList<Produit> articleTrouve) {
            this.articleTrouve = articleTrouve;
        }
    
        /**
         * @return the BoutonOK
         */
        public JButton getBoutonOK() {
            return BoutonOK;
        }
    
        /**
         * @param BoutonOK the BoutonOK to set
         */
        public void setBoutonOK(JButton BoutonOK) {
            this.BoutonOK = BoutonOK;
        }
    
        /**
         * @return the BoutonAnnuler
         */
        public JButton getBoutonAnnuler() {
            return BoutonFermer;
        }
    
        /**
         * @param BoutonAnnuler the BoutonAnnuler to set
         */
        public void setBoutonAnnuler(JButton BoutonFermer) {
            this.BoutonFermer = BoutonFermer;
        }
    
         public void setBoutonControleur (ActionListener listener){
            BoutonOK.addActionListener(listener);
            BoutonFermer.addActionListener(listener);
            getJr1().addActionListener(listener);
            getJr2().addActionListener(listener);
            getJr3().addActionListener(listener);
            getJr4().addActionListener(listener);
            
        }    
    
    
        public void Chargement(){
    
            int i=0,j=0;
            String  title[] = {"Code","Nom","Prix","Quantité","Auteur/Licence", "Editeur/Marque"};
            Object[][] data = new Object[50][6];
    
             panneauBouton.setBounds(8, 82, 620, 45);
             add(panneauBouton);
             panneauLabelTable.setVisible(false);
    
    
            while(i<monStock.getArticle().size())
            {
              if(monStock.getArticle().get(i).getSid()==1)
              {
               //data[j][0]=monStock.getArticle().get(i).getPid();
               data[j][0]=monStock.getArticle().get(i).getCode();
               data[j][1]=monStock.getArticle().get(i).getNom();
               data[j][2]=monStock.getArticle().get(i).getPrix();
               data[j][3]=monStock.getArticle().get(i).getQuantite();
               if(this.monStock.getArticle().get(i) instanceof Livre)
               {
                 Livre tempLivre;
                 tempLivre = (Livre)(monStock.getArticle().get(i));
                 data[j][4]= tempLivre.getAuteur();
                 data [j][5]=tempLivre.getEditeur();
               }
               if(this.monStock.getArticle().get(i) instanceof Logiciel)
               {
                 Logiciel tempLogiciel;
                 tempLogiciel = (Logiciel)(this.monStock.getArticle().get(i));
                 data[j][4]= tempLogiciel.getLicence();
                 data[j][5] = tempLogiciel.getMarque();
               }
               j++;
              }
              i++;
            }
    
            Resultat= new JTable(new DefaultTableModel(data, title));
            //getContentPane().add(new JScrollPane(Resultat));
            panneauLabelTable.add(Resultat);
            panneauLabelTable.add(new JScrollPane(Resultat));
            panneauLabelTable.setBounds(8,130,620,950);        
            panneauLabelTable.setVisible(true);
            validate();
    
        }
    
        /**
         * @return the jr1
         */
        public JRadioButton getJr1() {
            return jr1;
        }
    
        /**
         * @param jr1 the jr1 to set
         */
        public void setJr1(JRadioButton jr1) {
            this.jr1 = jr1;
        }
    
        /**
         * @return the jr2
         */
        public JRadioButton getJr2() {
            return jr2;
        }
    
        /**
         * @param jr2 the jr2 to set
         */
        public void setJr2(JRadioButton jr2) {
            this.jr2 = jr2;
        }
    
        /**
         * @return the jr3
         */
        public JRadioButton getJr3() {
            return jr3;
        }
    
        /**
         * @param jr3 the jr3 to set
         */
        public void setJr3(JRadioButton jr3) {
            this.jr3 = jr3;
        }
    
        /**
         * @return the jr4
         */
        public JRadioButton getJr4() {
            return jr4;
        }
    
        /**
         * @param jr4 the jr4 to set
         */
        public void setJr4(JRadioButton jr4) {
            this.jr4 = jr4;
        }
    
        /**
         * @return the bg
         */
        public ButtonGroup getBg() {
            return bg;
        }
    
        /**
         * @param bg the bg to set
         */
        public void setBg(ButtonGroup bg) {
            this.bg = bg;
        }
    
        
    
    }
    


    2 ieme partie : les controleurs:



    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
    
    package javaallocation;
    
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.JRadioButton;
    
    /**
     *
     * @author Fabian
     */
    public class ControleursPanneauRecherche implements ActionListener
    {
        private PanneauDonnees Donnees;
        private PanneauRecherche RechercheDonnees;
        private FenetreSecondaire Fenetre2;
    
    
        public ControleursPanneauRecherche()
        {
        }
    
        public ControleursPanneauRecherche(PanneauDonnees maVuePrincipale, PanneauRecherche maVue, FenetreSecondaire AjoutFenetre)
        {
         this.setDonnees (maVuePrincipale);
         this.setAjoutDonnees(maVue);
         this.setFenetre2(AjoutFenetre);
         maVue.setBoutonControleur(this);
        }
    
        public void actionPerformed(ActionEvent ev)
        {
            Object source = ev.getSource();
    
            if (source==RechercheDonnees.getJr1())
            {
               RechercheDonnees.setIdCourant(0);
               RechercheDonnees.Chargement();
               System.out.println("source : "+((JRadioButton)source).getText());
            }
    
            if (source==RechercheDonnees.getJr2())
            {
              RechercheDonnees.setIdCourant(1);
              RechercheDonnees.Chargement();
               System.out.println("source : "+((JRadioButton)source).getText());
            }
    
            if (source==RechercheDonnees.getJr3())
            {
              RechercheDonnees.setIdCourant(2);
              RechercheDonnees.Chargement();
               System.out.println("source : "+((JRadioButton)source).getText());
            }
        }
    
    
    
    
        
    
        /**
         * @return the Donnees
         */
        public PanneauDonnees getDonnees() {
            return Donnees;
        }
    
        /**
         * @param Donnees the Donnees to set
         */
        public void setDonnees(PanneauDonnees Donnees) {
            this.Donnees = Donnees;
        }
    
        /**
         * @return the AjoutDonnees
         */
        public PanneauRecherche getAjoutDonnees() {
            return RechercheDonnees;
        }
    
        /**
         * @param AjoutDonnees the AjoutDonnees to set
         */
        public void setAjoutDonnees(PanneauRecherche RechercheDonnees) {
            this.RechercheDonnees = RechercheDonnees;
        }
    
        /**
         * @return the Fenetre2
         */
        public FenetreSecondaire getFenetre2() {
            return Fenetre2;
        }
    
        /**
         * @param Fenetre2 the Fenetre2 to set
         */
        public void setFenetre2(FenetreSecondaire Fenetre2) {
            this.Fenetre2 = Fenetre2;
        }
    
        
    
    }
    


    Merci pour votre aide :)

    • Partager sur Facebook
    • Partager sur Twitter
      24 mai 2011 à 16:10:59

      Pour commencer, il faudrait passer des arguments à la méthode Chargement(), pour que lorsque tu l'appelles celle-ci puisse faire quelque chose de pertinent :-)

      Après, avec la méthode que tu utilises, tu devrais utiliser la méthode remove (voire remove all, puisque ton panneauLabelTable ne contient que la table) du panel qui contient la table que tu veux filtrer avant d'ajouter la nouvelle, sinon tu verras rien :-)

      Bonne chance :-)
      • Partager sur Facebook
      • Partager sur Twitter
        24 mai 2011 à 16:35:32

        Hello,

        Ben vi, j'ai deja teste ca... et çà ne marche po non plus :(
        • Partager sur Facebook
        • Partager sur Twitter
          24 mai 2011 à 19:08:32

          Au lieu de recréer ta jtable a chaque fois, je te conseille de le créer dans le constructeur de la classe PanneauRecherche et dans la méthode chargement, tu change simplement le modèle en faisant :
          Resultat.setModel(new DefaultTableModele(data, title)); et ça devrait fonctionner.
          • Partager sur Facebook
          • Partager sur Twitter
            25 mai 2011 à 8:47:22

            ah... je vais tester çà...

            MErci pour cette information :)
            • Partager sur Facebook
            • Partager sur Twitter

            Rafraichissement d'une jtable

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown