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 :

Mise à jour d'une JTable (Problème d'affichage)


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 137
    Par défaut Mise à jour d'une JTable (Problème d'affichage)
    Bonjour tout le monde

    Alors voilà mon problème :

    Je possède une JTable pour afficher des données d'une base de données

    ces données depend d'une date entrée par l'utilisateur

    ça marche bien lors de la prmière utilisation ,et s'il change la date ma JTable

    n'est pas mis à jour et je sais pas comment la metrre à jour,

    j'ai utilisé repaint et revalidate ,mais ça change rien,

    sachant que si j'ai fait un getValeurAt(1,1) je trouve la valeur que je veut

    mais n'est pas affiché !!

    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
    Un peu de code est nécessaire pour tenter de trouver le problème
    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é Avatar de donnadieujulien
    Développeur informatique
    Inscrit en
    Avril 2008
    Messages
    433
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2008
    Messages : 433
    Par défaut Perso
    Dans ce genre de cas, je vire tout (mes jTables marchent avec un ArrayList) donc ArrayList.clear();
    et je rerempli tout, et ça marche bien avec un repaint

  4. #4
    Membre confirmé
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 137
    Par défaut
    Bonjour

    merci pour vos réponses

    pour donnadieujulien

    moi aussi j'utilise des ArrayList() pour remplir ma JTable,et c'est logique de

    faire un clear à chaque fois , et j'ai éssayer d'afficher mes ArrayList sans faire

    clear et avec clear ,ça dans le meme résultat et repaint n'a pas résolu le

    problème.

    pour dinobogan voila mon code:


    remplissage de la table :
    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
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
     
    public class TableRapport {
     
    	  Connection conn;
    	  String date;
     
    	  double PJ=0,PC=0;
    	  double LJ=0,LC=0;  
     
    	  ArrayList t1=new ArrayList();
    	  ArrayList t2=new ArrayList();
    	  ArrayList t3=new ArrayList();
    	  ArrayList t4=new ArrayList();
    	  ArrayList t5=new ArrayList();
     
     
    	  DefaultTableModel model;
    	  JScrollPane scroll=new JScrollPane();
    	  table tableau =null;
     
    	  DefaultTableCellRenderer forme;
     
    	  FormeColonne produitForme,PForme,PCForme,LForme,LCForme;
     
    	public TableRapport(Connection conn,String date,String req){
     
            this.conn=conn;
    		this.date=date;   
     
    	        Requete resultat = new Requete(conn,req,1); 
     
             try {     
     
    	    	  /*  t1.clear();
    	    	    t2.clear();
    	    	    t3.clear();
    	    	    t4.clear();
    	    	    t5.clear();*/
     
    	    		System.out.println(t2);
     
    	         while(resultat.resultat.next())
     
    	         {				  	
    	        	 String RefProduit=resultat.resultat.getString(1);
    			     t1.add(RefProduit);			     
    			     ChercheTable(RefProduit);
    	             t2.add(PJ);
    	             t3.add(PC);
    	             t4.add(LJ);
    	             t5.add(LC);  
     
    	 			PJ=0;
    	 			LJ=0;  
    	     		PC=0;
    	 			LC=0;  
    	         }
     
     
    	        }catch(SQLException e) { 
    		    	  e.printStackTrace(); 
    	    	 }		                  
                    model=new DefaultTableModel(){
     
            	      public boolean isCellEditable(int row, int col){ 
            		  if (col==0) {return false;} 
            		   else {return true; }
     
            	     }
                };  
     
              System.out.println(t2);
              model.addColumn("        Réference du produit  ",t1.toArray());
              model.addColumn(" Production du jour ",t2.toArray());        
              model.addColumn(" Production Cumulée ",t3.toArray());
              model.addColumn(" Livraison du jour ",t4.toArray());
              model.addColumn(" Livraison Cumulée ",t5.toArray());                  
     
    	        tableau = new table(model);  
     
    	 	    produitForme=new FormeColonne(tableau.tablee,"        Réference du produit  ",Color.DARK_GRAY,Color.yellow,JLabel.LEFT); 
                PForme=new FormeColonne(tableau.tablee," Production du jour ",Color.white,Color.black,JLabel.CENTER); 
    	 	    PCForme=new  FormeColonne(tableau.tablee," Production Cumulée ",new Color(0,74,14),Color.white,JLabel.CENTER); 
    		    LForme=new  FormeColonne(tableau.tablee," Livraison du jour ",Color.white,Color.black,JLabel.CENTER); 
    		    LCForme=new  FormeColonne(tableau.tablee," Livraison Cumulée ",new Color(0,74,14),Color.white,JLabel.CENTER); 
     
    			scroll.setViewportView(tableau.tablee);
     
    	}
     
      public void ChercheTable(String RefProduit){	 
     
    	  String req="SELECT Production_J,PC,Livraison_J,LC FROM omag_valeur WHERE Date ='"+date+"' AND RefProduit ='"+RefProduit+"'"; 
          Requete resultat = new Requete(conn,req,1); 
     
          try{  
     
        	  while(resultat.resultat.next()){  
     
        		PJ=resultat.resultat.getDouble(1);  
        		PC=resultat.resultat.getDouble(2);  
        		LJ=resultat.resultat.getDouble(3);  
        		LC=resultat.resultat.getDouble(4);    		   
        	  }   	  
          }catch(SQLException e){
           	 e.printStackTrace();
        	 }
     
       }
     
    }
    propriétes de la table :


    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
    public class table{
     
     
    	JTable tablee=new JTable();
     
     
      public table(DefaultTableModel model) {
     
     
    	        tablee.setModel(model); 
    	        tablee.setCellSelectionEnabled(true);
    	        tablee.setAutoCreateRowSorter(true);
    	        tablee.setAutoResizeMode(0);
    	        tablee.setColumnSelectionInterval(1, 1);
    	        tablee.setRowSelectionInterval(0, 0);
     
    	        tablee.setRowHeight(20);
     
    	        // definir un curseur sur la table
     
    	        Image img=Toolkit.getDefaultToolkit().getImage("images\\curseurs\\plus.gif");
    	        Point p=new Point(15,15);
    	        Cursor curs=Toolkit.getDefaultToolkit().createCustomCursor(img,p, "x");
    	        tablee.setCursor(curs);
     
         }		
     }
    appel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
            TableRapport Trapport;	  
            JPanel rapport=new JPanel();
             rapport.setLayout(null); 	  
            Trapport = new TableRapport(conn,d.datereponse,ReqJournalier);
            // avec conn=connection et d.datereponse=la date entrée et ReqJournalier=requete
    	    Trapport.scroll.setBounds(20,10,790,350);
            rapport.add(Trapport.scroll);
            Trapport.tableau.tablee.revalidate();
    merci pour votre aide.

  5. #5
    Membre Expert
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 052
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 052
    Par défaut
    Salut,

    Il suffit de créer un model, puis de l'attribuer à la JTable. Voici un exemple, ou à chaque clic sur le bouton la JTable est remise à jour :

    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
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
    import javax.swing.table.DefaultTableModel;
     
    public class Test {
     
    	private boolean toggle = true;
     
    	private Object[][] donnees = {  
    		      {"Swing", "Astral", "standard", Color.red, Boolean.TRUE}, 
    		      {"Swing", "Mistral", "standard", Color.yellow, Boolean.FALSE}, 
    		      {"Gin", "Oasis", "standard", Color.blue, Boolean.FALSE},
    		      {"Gin", "boomerang", "compétition", Color.green, Boolean.TRUE},
    		      {"Advance", "Omega", "performance", Color.cyan, Boolean.TRUE}, 
    		} ;
    	private Object[][] donnees2 = {  
    		      {"1", "2", "3", Color.CYAN, Boolean.FALSE}, 
    		      {"4", "5", "6", Color.ORANGE, Boolean.TRUE}, 
    		      {"7", "8", "9", Color.MAGENTA, Boolean.FALSE} 
    		} ;
    	private String[] titreColonnes = { "marque","modèle", "homologation",
    		                           "couleur", "vérifiée ?"};
     
    	private JTable table;
    	private DefaultTableModel model;
     
    	public static void main(String[] args) {
    		new Test();
    	}
     
    	public Test() {
    		JFrame f = new JFrame();
    		model = new DefaultTableModel(donnees, titreColonnes);
    		table = new JTable(model);
    		JButton action = new JButton("toggle");
    		action.addActionListener(new ActionListener() {
    			@Override
    			public void actionPerformed(ActionEvent e) {
    				if (toggle) {
    					model = new DefaultTableModel(donnees2, titreColonnes);
    				}
    				else {
    					model = new DefaultTableModel(donnees, titreColonnes);
    				}
    				toggle = !toggle;
    				table.setModel(model);				
    			}
    		});
    		f.add(action, BorderLayout.NORTH);
    		f.add(new JScrollPane(table), BorderLayout.CENTER);
    		f.pack();
    		f.setVisible(true);
    	}
    }

  6. #6
    Membre confirmé
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 137
    Par défaut
    salut

    merci beaucoup visiwi pour cette réponse

    j'ai testé ce code et ça marche pour cet exemple ,mais j'ai pas arrivé à

    l'adapté avec mon problème car l'utilisateur peut entrez une infinité des dates

    donc je peux pas créer pour chaque date son modele ,

    merci encore.

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

Discussions similaires

  1. Mise à jour d'un Jtable (problème complexe)
    Par Micke7 dans le forum Composants
    Réponses: 9
    Dernier message: 28/09/2009, 15h33
  2. Mise à jour d'une JTable
    Par kimlaw95 dans le forum Composants
    Réponses: 6
    Dernier message: 03/04/2009, 15h25
  3. mise à jour d'une JTable => erreur aléatoire
    Par AliLoU` dans le forum Composants
    Réponses: 2
    Dernier message: 30/03/2007, 15h11
  4. Mise à jour d'une JTable en fonction d'une JList
    Par xtaZy dans le forum Composants
    Réponses: 1
    Dernier message: 21/03/2007, 18h25
  5. mise à jour d'une JTable ?
    Par Sakalam dans le forum Composants
    Réponses: 11
    Dernier message: 15/09/2006, 15h06

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