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 :

Mettre plusieurs valeurs dans cellule JTable


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Par défaut Mettre plusieurs valeurs dans cellule JTable
    Bonjour,

    J'ai une JTable et je souhaiterais mettre plusieurs valeurs dans une cellule.
    Est-ce possible et si oui comment avec les méthodes set et getValueAt

  2. #2
    Membre Expert Avatar de rtg57
    Homme Profil pro
    Autodidacte
    Inscrit en
    Mars 2006
    Messages
    1 343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 343
    Par défaut
    Bonjour,


    on peut mettre pratiquement tout ce que l'on veut dans une cellule de JTable.
    Tout dépend de votre implémentation de la méthode getValue().
    Qu'est-ce que vous y avez mis ?

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Par défaut
    Voici mes méthode get et set:
    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
     public Object getValueAt(int row, int col){
        	String nom;	
            String abreviation;
            int nbSeance;
            int ligne = 0;
            int colonne = 0;
            int uneSemaine = 0;
            Seance uneSeance = new Seance();
        	for(Seance seance : seances){
            	nom = seance.getModule().getNom();
            	abreviation = seance.getModule().getAbreviation();
            	nbSeance = seance.getModule().getNbSeance();
            	ligne = seance.getIndexLigne();
            	colonne = seance.getIndexColonne();
            	uneSemaine = seance.getSemaine();
            	Module module = new Module();
            	module.setNom(nom);
            	module.setAbreviation(abreviation);
            	module.setNbSeance(nbSeance);
            	uneSeance.setModule(module);
            }
     
        	if(seances.size() != 0){
        		if(row == ligne && col == colonne && semaine == uneSemaine){
        			return uneSeance.toString();
        		}else{
        			return "";
        		}
     
        	}else
        		return "";
        }
     
        public void setValueAt(Object value, int row, int col){
        	String nom;	
            String abreviation;
            int nbSeance;
            int ligne = 0;
            int colonne = 0;
            int uneSemaine = 0;
            Seance uneSeance = new Seance();
        	for(Seance seance : seances){
            	nom = seance.getModule().getNom();
            	abreviation = seance.getModule().getAbreviation();
            	nbSeance = seance.getModule().getNbSeance();
            	ligne = seance.getIndexLigne();
            	colonne = seance.getIndexColonne();
            	uneSemaine = seance.getSemaine();
            	Module module = new Module();
            	module.setNom(nom);
            	module.setAbreviation(abreviation);
            	module.setNbSeance(nbSeance);
            	uneSeance.setModule(module);
            }
     
        	if(seances.size() != 0){
        		if(row == ligne && col == colonne && semaine == uneSemaine){
        			uneSeance.toString();
        		}
        	}
        }
    Par ailleurs,
    Quand j'ajoute une valeur dans une cellule, la valeur de la cellule précédente que je vient de modifier disparait

  4. #4
    Membre Expert Avatar de rtg57
    Homme Profil pro
    Autodidacte
    Inscrit en
    Mars 2006
    Messages
    1 343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 343
    Par défaut
    Bonjour,

    ce n'est pas la manière habituelle de procéder.

    La fonction getValueAt() est appelée à chaque fois que la JTable doit être rafraîchie.
    Si le tableau fait 4 colonnes sur 3 lignes, elle va être appelée 12 fois, avec les paramètres 'row' et 'col' qui vont être incrémentés automatiquement; de 0 à 3 pour les colonnes, et 0 à getRowCounts() - 1, pour les lignes.
    C'est pour cela qu'il faut indiquer dans getRowCount, le nombre d'objets à afficher dans le tableau.

    Pour en revenir à votre cas, il semble que ce soit les éléments de l'objet Seance qu'il faut afficher.
    Donc dans getValueAt(), vous devez vous positionner sur l'élément Seance.get( row ), puis renvoyer l'élément voulu de Seance en fonction de 'col'.
    Par exemple, en colonne '0', le nom du la séance; colonne '1', l'horaire; en colonne '2', le prix...

    Voyez ce lien qui permet de faire un bon départ avec les JTable : http://baptiste-wicht.developpez.com.../swing/jtable/

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Par défaut
    J'ai refait commet ceci mais je n'arrive tout pas à remettre les valeur à la ligne, pourtant dans ma méthode toString() j'ai mis des \n:
    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
    public String getValueAt(int row, int col){
        	String chaine = null;
        	if(seances.size() != 0){
        		for(Seance uneSeance : seances){
        			if(uneSeance.getIndexColonne() == col && uneSeance.getIndexLigne() == row && uneSeance.getSemaine() == semaine){
        				chaine = "<html><p>"+uneSeance.toString()+"</p></html>";
     
        			}
        		}
            	switch(col){
            	case 0:
            		return chaine;
            	case 1:
            		return chaine;
            	case 2:
            		return chaine;
            	case 3:
            		return chaine;
            	case 4:
            		return chaine;
            	case 5:
            		return chaine;
            	case 6:
            		return chaine;
            	default:
            		return null;
                }
        	}else{
        		return null;
        	}
        }

  6. #6
    Membre Expert Avatar de rtg57
    Homme Profil pro
    Autodidacte
    Inscrit en
    Mars 2006
    Messages
    1 343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 343
    Par défaut
    Bonjour,

    j'ai du mal à comprendre le fonctionnement de votre objet seances.

    Pourquoi faire une boucle à chaque entrée dans getValue(), pour y chercher un objet seances, dont l'index colonne et l'index de ligne doit correspondre à 'col' et 'row' ?

    Admettons que seances soit une ArrayList d'un objet comprenant 3 éléments String:
    - String sTitre
    - String sHoraire
    - String sPrix (C'est un exemple)

    Admettons que votre JTable doit afficher:
    - en colonne 0, le titre,
    - en colonne 1, l'horaire
    - en colonne 2, le prix

    Le remplissage de du tableau se fait simple comme suit:
    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
    public Object getValueAt( int row, int col ) {
      seanceTemp = seances.get( row ); // Pointe sur l'élément seances correspondant à la ligne demandée par le rafraichissement de JTable
     
      switch( col ) {
        case 0: // Concerne le titre
          return seanceTemp.sTitre;
          // break;
     
        case 1: // Concerne l'horaire
          return seanceTemp.sHoraire;
          // break;
     
        case 2: // Concerne le prix
          return seanceTemp.sPrix;
          // break;
     
        default:
           return null;
      }
    }
    Ensuite s'il faut mettre plusieurs 'String' dans une même String, cela peut se faire dans chaque case éventuellement.
    Mais en premier lieu, je pense qu'il faut tirer au clair l'organisation de votre structure à afficher.
    J'espère que ma réponse n'est pas hors sujet, et vous aide un peu...

Discussions similaires

  1. Mettre plusieurs valeur dans une constante
    Par mennix dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 19/04/2011, 07h34
  2. Mettre plusieures valeurs dans un textarea
    Par ninatity dans le forum Ext JS / Sencha
    Réponses: 2
    Dernier message: 28/10/2010, 10h50
  3. Mettre plusieurs valeurs dans un seul champ hidden asp
    Par gabdeschenes dans le forum ASP.NET
    Réponses: 3
    Dernier message: 28/10/2009, 19h52
  4. mettre plusieurs valeurs dans une cellule
    Par mgrizzly dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 15/05/2009, 11h42
  5. recuperer plusieurs valeurs dans une cellule
    Par Mimosa777 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 20/03/2008, 22h40

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