Jtable JscrollPane et ajouter rafraichir un Jtalbe

Jtable JscrollPane et ajouter rafraichir un Jtalbe - Java - Programmation

Marsh Posté le 08-06-2005 à 14:54:50    

Réponse ici :http://forum.hardware.fr/hardwaref [...] m#t1115447
 
Bonjour,  
 
J'essaie de faire un programme en java, qui affiche une liste d'information, qui peut être rafraichit par l'utilisateur au moyen d'une Jcombox (dans mon exemple j'ai mit un Jbutton car les evenements Jbutton sont plus faicle et plus lisible là n'est pas le problème).
 
Voila mon code :

Code :
  1. //-----------------------------------------
  2. // Inclusion des fichiers utils
  3. //-----------------------------------------
  4. import java.awt.*;
  5. import java.awt.event.*;
  6. import javax.swing.*;
  7. import javax.swing.text.*;
  8. import javax.swing.event.*;
  9. import javax.swing.table.AbstractTableModel;
  10. import java.util.*;
  11. //import java.lang.*;
  12. //-----------------------------------------
  13. // Déclaration de la classe
  14. //-----------------------------------------
  15. public class testJTable extends JFrame
  16. {
  17. private JTable  jTable ;
  18. private JScrollPane jSPane;
  19. private JPanel  rightJPane = new JPanel(new FlowLayout() ) ;
  20. private JButton  jbouton  = new JButton("OK" );
  21. public testJTable()
  22. {
  23.  this.setSize(750,600);
  24.  this.setLocation(100,100);
  25.  this.setLayout (new BorderLayout() ) ;
  26.  this.setBackground(Color.lightGray);
  27.  this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  28.  this.jbouton.addActionListener(new MyActionListener());
  29.  afficheTable1();
  30.  this.jSPane = new JScrollPane(this.jTable);
  31. //  rightJPane.add(jcomboxSalle, BorderLayout.NORTH );
  32.  this.rightJPane.add(this.jbouton, BorderLayout.NORTH );
  33.  this.rightJPane.setBackground(Color.lightGray) ;
  34.  this.add(this.rightJPane,BorderLayout.WEST);
  35.  this.add(this.jSPane, BorderLayout.CENTER);
  36.  this.setVisible(true);
  37. }
  38. //-----------------------------------------------------------------------
  39. // La partie éxécutant du code doit se trouver hors de la définition
  40. // de la classe
  41. //-----------------------------------------------------------------------
  42. public static void main (String args[])
  43. {
  44.  testJTable truc = new testJTable();
  45. }
  46. public void afficheTable1()
  47. {
  48.  Vector<String> nomDesColonnes = new Vector<String>();
  49.  nomDesColonnes.addElement("Test d'affichage 1" );
  50.  Vector<Vector> valeurDesChamps = new Vector<Vector>();
  51.  Vector<String> elementUn = new Vector<String>();
  52.  Vector<String> elementDeux = new Vector<String>();
  53.  Vector<String> elementTrois = new Vector<String>();
  54.  elementUn.addElement("test 1" );
  55.  elementDeux.addElement("test 2" );
  56.  elementTrois.addElement("test 3" );
  57.  valeurDesChamps.addElement(elementUn);
  58.  valeurDesChamps.addElement(elementDeux);
  59.  valeurDesChamps.addElement(elementTrois);
  60.  System.out.println("Je tente la construction de l'affichage" );
  61.  this.jTable  = new JTable(valeurDesChamps,nomDesColonnes);
  62.  System.out.println("C'est fait \\o/." );
  63. }
  64. public void afficheTable2()
  65. {
  66.  Vector<String> nomDesColonnes = new Vector<String>();
  67.  nomDesColonnes.addElement("Test d'affichage 2" );
  68.  Vector<Vector> valeurDesChamps = new Vector<Vector>();
  69.  Vector<String> elementUn = new Vector<String>();
  70.  Vector<String> elementDeux = new Vector<String>();
  71.  Vector<String> elementTrois = new Vector<String>();
  72.  elementUn.addElement("test 4" );
  73.  elementDeux.addElement("test 5" );
  74.  elementTrois.addElement("test 6" );
  75.  valeurDesChamps.addElement(elementUn);
  76.  valeurDesChamps.addElement(elementDeux);
  77.  valeurDesChamps.addElement(elementTrois);
  78.  //----------------------------------------------------------------
  79.  // Mrche pas !!! :(
  80.  //----------------------------------------------------------------
  81.  System.out.println("Je tente la construction du second affichage" );
  82.  remove(this.jTable);
  83.  this.jTable  = new JTable(valeurDesChamps,nomDesColonnes);
  84.  System.out.println("C'est fait \\o/." );
  85.  /*
  86.  System.out.println ("afficheTable2()" );
  87.  String[] columnNames = {"Test Affichage2"};
  88.  Object[][] data = { {"afficheTable2"}};
  89.  
  90.  jTable = new JTable(data, columnNames);
  91.  */
  92. }
  93. //-----------------------------------------------------------------------
  94. // Evènements liés aux action sur les boutons
  95. //-----------------------------------------------------------------------
  96. private class MyActionListener implements ActionListener
  97. {
  98.  public void actionPerformed(ActionEvent event)
  99.  {
  100.   if( event.getSource() == jbouton )
  101.   {
  102.    afficheTable2();
  103.   }
  104.   else if( false )
  105.   {
  106.   }
  107.  }
  108. }
  109. }

 
 
J'ai lu des posts dans certains forums, dans la doc APi swing qui recommande de passé par un modele, mais pas d'exemple concret.
Vous remarquerez que dans mon cas, je ne chipote pas a vouloir rajouter une ligne, je reconstruit tout simplemnt les objets en totalité et cela ne se met pas à jour. J'ai tente d'appeler les méthodes repaint()  ou paint() rien n'y fait.
Donc je suis prenneur de la solution, j'affiche mon objet recreer, ou mieux j'efface les lignes et je rajoute mes nouvelles informations.
 
Merci D'avance


Message édité par Diabolic Jones le 10-06-2005 à 11:16:33
Reply

Marsh Posté le 08-06-2005 à 14:54:50   

Reply

Marsh Posté le 10-06-2005 à 10:58:13    

Bonjour,
 
Il va vraiment falloir que j'aille sur javalobby.com pour avoir une embryon de réponse :-( . C'est malheureux que la communaute Java soit presque inexistante. Merci d'avoir lu le post tout de même.
 
Donc au ton de ma réponse vous vous doutez certainement que je n'ai pas trouver de solution a mon probleme. Personne n'aurais un exemple de code même sans explication ?
 
Cordialement

Reply

Marsh Posté le 10-06-2005 à 11:10:13    

Un élement de mreponce est déjà présent dans le forum hardware.fr
 
http://forum.hardware.fr/forum2.ph [...] subcat=390
 
un autre élement de réponse ressemble à ceci :  

Code :
  1. model = new DefaultTableModel(0,1);
  2. table = new JTable();
  3. table.setModel(model);
  4. model.removeRow(i);
  5. model.addRow(data);


 
Et voila la reponce ultime de Sun que je cherche depuis 15 jours. http://java.sun.com/j2se/1.5.0/doc [...] Model.html


Message édité par Diabolic Jones le 10-06-2005 à 11:15:23
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed