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 :

[JTable]Modifier les valeurs en temps réel


Sujet :

Composants Java

  1. #1
    Membre régulier Avatar de yoshï
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 206
    Points : 88
    Points
    88
    Par défaut [JTable]Modifier les valeurs en temps réel
    Bonjour,
    j'ai une interface avec une JTable qui affiche les valeurs de variables modifiées par des processus.J'aimerai que les cellules de la JTable soient modifiées à chaque fois que le processus change une valeur. voila comment je m'y prends pour faire ceci

    Une des actions dans la classe du processus qui modifie un compteur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    	private void inc_compteur() {
     
    		o.attente(id);
    		System.out.println("T" + o.temps++ + " => Processus " + id + " incrémente son compteur.");
    		compteur++;	
    		e.modifCompteurPrive(id,compteur); //e est un evenement				
    		o.bloquer();
    }
    la classe Evenement qui récupère le signal
    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 Evenements {
     
    	StatistiquesPanel panel;
     
    	public Evenements(StatistiquesPanel statPan){
    		this.panel = statPan;
    	}
     
    	//les actions atomiques qui doivent entrainer une modification
    	public void modifCompteurPrive(int tache, int compt){
    		panel.model.setValueAt(Integer.toString(compt),tache,2);
    	}
     
    	public void demandeMutex(int tache){
    		panel.model.setValueAt("Demande MUTEX",tache,1);
    	}
     
    	public void modifCompteurPartage(int tache, int compt){
    		panel.model.setValueAt(Integer.toString(compt),tache,3);
    	}
     
    	public void rendreMutex(int tache){
    		panel.model.setValueAt("Rend MUTEX",tache,1);
    	}
     
    }
    la méthode setValueAt de la classe TableModelStat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     public void setValueAt(Object value, int rowIndex, int columnIndex){
        	   String[] item;
               if (rowIndex >= items.size()) {
                   item = new String[getColumnCount()];
                   items.add(item);
               } else {
                   item = (String[]) items.get(rowIndex);
               }
     
               item[columnIndex] = value.toString();
               fireTableCellUpdated(rowIndex >= items.size() ? items.size() - 1 : rowIndex, columnIndex);
     
        }
    Le problème est que la JTable n'est modifiée qu'à la fin de l'execution (affiche la valeur final du compteur) alors qu'elle devrait afficher les valeurs successives du compteur.A noter que ce n'est pas du au fait que les processus s'executent trop vite car je peux régler les temporisations.Les sorties consoles (System.out.println) fonctionnent très bien, ils affichent bien les valeurs successives.
    Avez vous une idée?
    merci d'avance

  2. #2
    Membre confirmé Avatar de menuge
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    727
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2004
    Messages : 727
    Points : 616
    Points
    616
    Par défaut
    As tu essayer la méthode resizeAndRepaint ?
    --
    Ludovic

  3. #3
    Membre régulier Avatar de yoshï
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 206
    Points : 88
    Points
    88
    Par défaut
    As tu essayer la méthode resizeAndRepaint ?
    Si je fais une repaint() sur le panel dans lequel est la JTable ça ne change rien

  4. #4
    Membre confirmé Avatar de menuge
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    727
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2004
    Messages : 727
    Points : 616
    Points
    616
    Par défaut
    c'est une méthode de JTable
    --
    Ludovic

  5. #5
    Membre régulier Avatar de yoshï
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 206
    Points : 88
    Points
    88
    Par défaut
    c'est une méthode de JTable
    Je ne la trouve pas.Y a bien JTable.resize mais pas de JTable.resizeAndRepaint

  6. #6
    Membre confirmé Avatar de menuge
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    727
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2004
    Messages : 727
    Points : 616
    Points
    616
    --
    Ludovic

  7. #7
    Membre régulier Avatar de yoshï
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 206
    Points : 88
    Points
    88
    Par défaut
    Je ne comprends pas pourquoi je ne la touve pas .
    itemsTable est de type JTable
    Images attachées Images attachées  

  8. #8
    Membre confirmé Avatar de menuge
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    727
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2004
    Messages : 727
    Points : 616
    Points
    616
    Par défaut
    elle est protected...

    Sinon, tu peux faire un revalidate et suivi d'un repaint....
    --
    Ludovic

  9. #9
    Membre régulier Avatar de yoshï
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 206
    Points : 88
    Points
    88
    Par défaut
    Malheureusement ça ne change rien.
    La table est bien mise à jour mais une fois que les processus sont terminés.
    (on voit la valeur finale du compteur).On ne voit pas les incrémentations successives...

  10. #10
    Membre confirmé Avatar de menuge
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    727
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2004
    Messages : 727
    Points : 616
    Points
    616
    Par défaut
    Désolé...
    Dans ce cas, je ne vois pas...
    --
    Ludovic

  11. #11
    Membre régulier Avatar de yoshï
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 206
    Points : 88
    Points
    88
    Par défaut
    J'ai l'impression que malgrès le fait que les instructions de modification soit plaçées dans les actions atomiques des processus, Elles ne s'executent qu'à la fin.C'est vraiment louche.
    Exemple: les System.out.println plaçés dans les actions atomiques n'affichent rien pendant le traitement mais dès qu'il s'achève toutes les sorties apparaissent à l'écran...

  12. #12
    Membre confirmé Avatar de menuge
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    727
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2004
    Messages : 727
    Points : 616
    Points
    616
    Par défaut
    Regarde au niveau du pattern Observateur...
    A mon avis, ça vient de ton implementation, et je pense que ça t'aidera beaucoup...
    De plsu c'est un des plsu facile à mettre en place...
    --
    Ludovic

Discussions similaires

  1. Lire un fichier Excel pour modifier les valeurs des cellules
    Par Paloma dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 31/10/2006, 15h13
  2. Réponses: 1
    Dernier message: 31/10/2006, 11h15
  3. [JTable] modifier les données à postériori
    Par SheikYerbouti dans le forum Composants
    Réponses: 4
    Dernier message: 09/02/2006, 12h19

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