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 :

Graphique dans une cellule de JTable


Sujet :

Composants Java

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 145
    Points : 80
    Points
    80
    Par défaut Graphique dans une cellule de JTable
    Bonjour,

    savez-vous s'il est possible d'insérer un graphique dans une cellule d'une JTable ?

    Les coordonnées à afficher sont stockées dans un fichier. Je n'ai pas besoin d'afficher les axes mais juste les points du fichier.

    Le but est d'avoir un graphique par ligne de la JTable dans une certaine colonne.

    Savez-vous si cela est possible et comment le faire ?

    Merci.
    bonne journée.

  2. #2
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 075
    Points : 7 981
    Points
    7 981
    Par défaut
    Peut être en utilisant un renderer que tu crée toi même pour la dite colonne ?

    Voir l'exemple de ColorRenderer ici http://docs.oracle.com/javase/tutori...nts/table.html (que tu transpose pour faire une affichage de graphique).
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 145
    Points : 80
    Points
    80
    Par défaut
    Merci pour la réponse.

    En fait, j'ai déjà créé un render avec une classe data :

    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
    public class DataBDDOperateurs {
     
    	private String ID;
    	private String NOM;
     
        public DataBDDOperateurs (String ID, String NOM) {
            super();
     
            this.ID = ID;
            this.NOM = NOM;
        }
     
    //////////////////////////////////////////////////////////////////////////
        public String getID() {
            return ID;
        }
     
        public void setID(String ID) {
            this.ID = ID;
        }
    //////////////////////////////////////////////////////////////////////////
        public String getNOM() {
            return NOM;
        }
     
        public void setNOM(String NOM) {
            this.NOM = NOM;
        }
    //////////////////////////////////////////////////////////////////////////
    }
    et une permettant d'avoir un modèle dynamique :

    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
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Vector;
     
    import Data.DataBDDOperateurs;
     
    import javax.swing.table.AbstractTableModel;
     
     
    public class ModeleDynamiqueBDDOperateurs extends AbstractTableModel {
     
    	private final List<DataBDDOperateurs> datas = new ArrayList<DataBDDOperateurs>();
     
        private final String[] entetes = {"Identifiant", "Nom"};
     
        public ModeleDynamiqueBDDOperateurs(){
        	super();    	
        }
     
        public int getRowCount() {
            return datas.size();
        }
     
        public int getColumnCount() {
            return entetes.length;
        }
     
        public String getColumnName(int columnIndex) {
            return entetes[columnIndex];
        }
     
     
    	private String ID;
    	private String NOM;
     
     
        public Object getValueAt(int rowIndex, int columnIndex) {
            switch(columnIndex){
                case 0:
                    return datas.get(rowIndex).getID();
                case 1:
                    return datas.get(rowIndex).getNOM();
                default:
                    return null; //Ne devrait jamais arriver
            }
        }
     
        public void addData(DataBDDOperateurs dataBDD) {
        	datas.add(dataBDD);
     
            fireTableRowsInserted(datas.size() -1, datas.size() -1);
        }
     
        public void removeData(int rowIndex) {
        	datas.remove(rowIndex);
     
            fireTableRowsDeleted(rowIndex, rowIndex);
        }
     
        public void updateTable()	// Supprime toutes les données du tableau
        {
            for (int i=0; i<getRowCount(); i++) {
     
                datas.remove(i);
                // Reduit i, il va etre augmenter en fin de boucle
                i--;
            }
        }
    }
    Par contre je n'ai aucune idée de la façon d'insérer un graphique et ceci n'a pas l'air d'être expliqué dans le lien que tu m'as fournis.

  4. #4
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 075
    Points : 7 981
    Points
    7 981
    Par défaut
    Je ne vois aucun renderer dans ton code la ^^ (donc une classe qui implemente TableCellRenderer).

    Et non l'exemple que j'ai donné ne montre pas comment mettre un graphique dans une table. Par contre ils expliquent le moyen de le faire...
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 145
    Points : 80
    Points
    80
    Par défaut
    Le lien que tu m'as donné est très intéressant, il y a plein de choses. J'en réutiliserait sûrement quelques unes.

    Par contre pour mon problème actuel, je n'ai aucune idée de comment faire.
    Dans le reste de mon logiciel, lorsque je veux créer un graphique, j'utilise JFreeChart.
    Je ne sais pas du tout comment faire pour mettre un graphique dans une cellule. Sais-tu quel outil utiliser ?

  6. #6
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 145
    Points : 80
    Points
    80
    Par défaut
    En fait, je ne sais pas comment utiliser le render.

    J'ai créé, je pense, tout ce qu'il faut pour insérer un graphique JFreeChart, sauf le render.
    Du coup dans les cellules en question, il y a "org.jfree.chart.JFreeChart@..."

    Sais comment je dois définir mon render pour afficher des graphiques ?

    J'imagine qu'il faut implémenter la méthode :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    public Component getTableCellRendererComponent(JTable table, Object value,
    			boolean isSelected, boolean hasFocus, int row, int column)
    mais je ne sais pas comment faire. Peux-tu m'aiguiller ?

    J'ai trouvé une classe redéfinissant le render pour JFreeChart :
    http://jfree.org/phpBB2/viewtopic.php?=&p=58764
    mais je n'arrive pas à faire fonctionner le code.

  7. #7
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 145
    Points : 80
    Points
    80
    Par défaut
    J'ai ajouter cette fonction dans la classe définissant le modèle dynamique :

    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
    public Class getColumnClass(int columnIndex){
    		switch(columnIndex){
    			case 0:
    				return String.class;
    			case 1:
    				return String.class;
    			case 3:
    				return String.class;
    			case 4:
    				return String.class;
    			case 5:
    				return String.class;
    			case 6:
    				return String.class;
    			case 7:
    				return JFreeChart.class;
     
    			default:
    				return Object.class;
    		}
    	}
    Depuis, rien ne s'affiche dans la dernière colonne.

Discussions similaires

  1. Calcul dans une cellule de jTable
    Par L'aigle de Carthage dans le forum Composants
    Réponses: 1
    Dernier message: 12/11/2009, 14h49
  2. inserer graphique dans une cellule
    Par veer2006 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 27/07/2007, 16h08
  3. date dans une cellule de jTable
    Par norkoffire dans le forum Composants
    Réponses: 4
    Dernier message: 14/06/2007, 16h27
  4. Texte sur plusieurs lignes dans une cellule de JTable
    Par JeanECN dans le forum Composants
    Réponses: 3
    Dernier message: 10/04/2006, 17h20
  5. [SWING][JTable] mettre une URL dans une cellule de JTable
    Par PoPeio dans le forum Composants
    Réponses: 4
    Dernier message: 10/03/2006, 12h00

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