Rafraichissement d'un JTable ?

Palleas_44 Messages postés 130 Date d'inscription lundi 12 décembre 2005 Statut Membre Dernière intervention 19 avril 2009 - 23 juin 2007 à 04:45
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 - 24 juin 2007 à 23:11
Bonjour :]

Dans le cadre d'un projet personnel, je dois creer une interface graphique en java pour une application. C'est pas très clair effectivement... Bref en fait ce que je cherche à faire c'est de "rafraichir" un JTable suivant les données d'une classe héritant de Vector, je ne voyais pas comment modeliser ca, on m'a conseillé de regenerer le JTable toutes les x secondes. J'ai donc fait comme ca (c'est peut être un chouillat incohérent ?) :

- une classe Datas qui herite de Vector, je fais comme ca car elle sera modifiée par la suite par le "commanditaire" donc je prefere que les données soient issuues d'une classe, c'est pour moi le plus évolutif/adaptatif, corrigez moi si j'ai tort
- une classe Headers qui definit l'en tete du tableau
- une classe Table qui hérite de JPanel, dans laquelle je place un JScrollPane, dans lequel se trouve mon tableau
    - cette classe, lors de l'instanciation, appele les données de la classe Datas, et celles de la classe Headers pour former le tableau (étant donné que JTable peut prendre deux Vector en parametre...)

Le probleme est donc le suivant : je veux rafraichir mon JTable ! J'ai fait comme ca :

public class Principale extends JApplet implements Runnable{
    private static final long serialVersionUID = 8385078832438623032L;
    private Table table;
    private Thread thread;
   
    public void init() {
        this.table  = new Table();
        thread = new Thread(this);
        setSize(new Dimension(800,400));
        getContentPane().add(table);
    }
   
    public void run() {
        while (thread != null) {
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println("Thread :]");
            this.table = new Table();
           
        }
    }
   
    public void start() {
        super.start();
        thread.start();
    }
}

MAIS comme vous pourrez le constater (ou pas) ca ne marche pas, je pensais que ca le ferais puisque passage de la variable table par référence, tout ca tout ca, mais au final le tableau n'est pas modifié...  Donc si jamais quelqu'un sait comment regénérer mon tableau ou plus largement comment rafraichir le contenu d'un tableau... J'ai cru entendre parler de AbstractTableModel mais je ne sais pas, de la meme maniere j'ai entendu parlé des écouteurs mais comme je ne connais pas la structure exact de la classe Datas, j'ai preferé attendre de voir avec le "commanditaire" pour me pencher la dessus :/

Merci d'avance
Palleas

3 réponses

cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
23 juin 2007 à 16:22
oulalal!!! ;o) en effet il manque pas mal de chose ... ;o) Et surtout si il a un probleme il n est surment pas dans ce morceau de code... ;o)
Premierement ;o) es tu obligé de passer par une applet?? si oui temps pis ;o) ca serai plus confortable en appli ;o) mais bon autrement ;o) le principe est asser simple ;o)....

Déja tu parts sur un bon principe isolé les données des ihm (interface Homme/Machine) ensuite un client pour modifier les données et un pour les lire
le second devant etre à l ecoute des modifs du premier ;o) (si j ai bien compris!!? )
Rien que de poser le probleme ainsi ;o) à l évidence ;o) un listener ;o) est nécéssaire ;o) sur la class Data .. ;o) de meme qu un model de donnée pour la JTabe qui pourra directement prendre en argument soit la class Data ;o) soit pour faire plus evolutif une interface (contenant toute les methode utile, implementer par un model référensant Data biensur, mais la, je m emporte!)   ;o)
Ensuite donc c est le listener qui devras rafraichier la JTable (ou Table, m enfin!, ca devrait ce faire tout seul) ;o) c est magique le JAVA ,o)

Bonne chance ...

[purple]GodConan/purple[:o)]
0
Palleas_44 Messages postés 130 Date d'inscription lundi 12 décembre 2005 Statut Membre Dernière intervention 19 avril 2009
23 juin 2007 à 16:28
Ok donc je vais devoir me penser sur les listeners apparement et revoir un petit peu mon truc dans ce cas la ^^
J'avoue qu'en bon débutant il y a certaines choses que je ne comprend pas dans ton message :
- "Ce serait plus confortable en appli" : j'utilise un Japplet parce que je ne connais que ca, enfin ca et JFrame pour utiliser des fenetres j'avoue que je sais pas trop la différence avec une appli, c'est quoi concretement ? ^^
- Pour ce qui est du fraichissement du JTable en lui meme, cela se fera grace à AbstractTableModel si j'ai bien compris ?

Je reviendrais...
0
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
24 juin 2007 à 23:11
 ;o) une appli par oposition à une applet ;o) c est a dire que tu utilise une JFrame ;o) plutot qu une JApplet voilà tout; en mme temps si ca tourne ds une JApplet ca tournera aussi dans une JFrame ;o) alors que l inverse n est pas vrai...
bon courage ;o) 

 

GodConan ;o)
0
Rejoignez-nous