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 :

Header Renderer


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2009
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 64
    Par défaut Header Renderer
    Bonjour à tous,

    J'ai un petit problème pour afficher le rendu du Header de ma JTable.
    Je m'explique, j'initialise ma JTable avec 2 vecteurs d'objet :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Vector<Object> vTitle = new Vector<Object>();
    Vector<Vector<Object>> vDatas = new Vector<Vector<Object>>();
    Ensuite j'applique un rendu sur les colonnes et les cellules de ma table
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    maTable.setModel(new MonModel(vDatas, vTitle));
     
    maTable.getTableHeader().setDefaultRenderer(new HeaderRender());
    maTable.setDefaultRenderer(Object.class, new DatasRender());
    Voici ma classe permettant d'appliquer le rendu de l'en tête des colonnes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public class HeaderRender extends DefaultTableCellRenderer {
     
        @Override
        public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
            JPanel panelCell = new JPanel();
     
            if (value instanceof MonObject) {
                // Ne rentre jamais dans cette condition 
                            // car value est toujours une instance de String    
            }
     
                    return panelCell;
    Le problème est que la valeur de ma colonne est toujours une instance du type String alors que j'initialise mon vecteur de titre avec des variables de type MonObject. Que dois faire pour que cette classe fonctionne?

  2. #2
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Il te renvoie le columName issue du modèle via getColumnName surement.
    Donc tu prends le columnName reçu, tu trace dans ton TableColumnModel ou ou dans ton TableModel et tu récupères ton objet en fonction du name.

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2009
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 64
    Par défaut
    Merci sinok pour ta réponse. Je me doutais que cela venait de la méthode getColumnName de mon Model qui renvoie un String. J'ai essayé de changé le type String par Object mais éclipse n'a pas apprécié.

    Je viens de trouver une solution à mon problème.
    Ma classe HeaderRender reste inchangé a celle que j'ai posté.

    Par contre j'ai modifié l'appel à cette classe, avant je fesais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    maTable.getTableHeader().setDefaultRenderer(new HeaderRender());
    et maintenant j'initialise le rendu de mon en-tête colonne par colonne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    TableCellRenderer renderer = new HeaderRender();
    for (int col = 0; col < vTitle.size(); col++) {               
     maTable.getColumnModel().getColumn(col).setHeaderRenderer(renderer);
     maTable.getColumnModel().getColumn(col).setHeaderValue(vTitle.elementAt(col));
    }
    De cette facon ma classe HeaderRender fonctionne très bien.
    Merci pour ton aide.
    ++

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Header Renderer et Drag
    Par dejuly dans le forum Flex
    Réponses: 2
    Dernier message: 25/09/2007, 13h23
  2. [JTable] header renderer : pas d'effet
    Par Lady dans le forum Composants
    Réponses: 12
    Dernier message: 19/04/2007, 08h58
  3. mise en page (Header and Footer) en XML-XSL.
    Par christine dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 01/03/2004, 16h31
  4. Render to texture???
    Par sebh dans le forum OpenGL
    Réponses: 2
    Dernier message: 17/01/2004, 09h50
  5. [MFC] image dans un header de CListCtrl
    Par tut dans le forum MFC
    Réponses: 3
    Dernier message: 11/06/2003, 15h26

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