Afficher Image dans un JXTreeTable [Résolu]

Signaler
Messages postés
6
Date d'inscription
mardi 13 mars 2007
Statut
Membre
Dernière intervention
24 mars 2011
-
Messages postés
6
Date d'inscription
mardi 13 mars 2007
Statut
Membre
Dernière intervention
24 mars 2011
-
Salut à tous!
J'ai un JXtreeTable (pour ceux qui connaissent pas c'est un Jtree  à plusieurs colonnes) et je souhaiterais afficher une image dans la dernière colonne.
J'ai pour cela dans ma classe qui extends DefaultTreeTableModel une méthode public Object getValueAt(Object node, int column).
Pour un text pas de probleme mais pour une image, un JLabel ...ça me renvoi une espece de référence...

Je bloque Auriez vous une idée?
merciu d'avance

3 réponses

Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
102
Salut,

Ce n'est pas le tableModel qu'il doit falloir redéfinir. Lui il se contente juste de contenir les données, pas la façon de les représenter !

Essaye de voir si tu as un renderer et un editor pour ton JXTreeTable : ce sont eux qu'il faut surcharger ! (voir ma source de propertytable par exemple).
Messages postés
6
Date d'inscription
mardi 13 mars 2007
Statut
Membre
Dernière intervention
24 mars 2011

bonjour,merci pour ta reponse!
J'ai en effet un renderer qui extends DefaultTreeCellRenderer mais je n'ai accès qu'à la premiere colonne.
Vu le nom de la classe, il  considere ça comme un Jtree simple et non plus comme un JTree à plusieurs colonnes.

http://www.inf.furb.br/~piva/downloads/compilador/Compilador/Compilador/bibliotecas%20extras/swinglabs-0.8.0-bin/swinglabs/docs/api/org/jdesktop/swingx/JXTreeTable.html

C'est pour ça je sèche un peu...
Messages postés
6
Date d'inscription
mardi 13 mars 2007
Statut
Membre
Dernière intervention
24 mars 2011

Bonjour, merci pour vos reponses
En effet j'ai utilisé un tablecellerenderer
voici le code si ça peut aider
a bientot

Ma classe qui hérite de tablecellrenderer:
     public class MesBoutons extends JButton implements TableCellRenderer {
          /**
         * 
         */
        private static final long serialVersionUID = 1L;

        public MesBoutons(String strs) {
          super(strs);
        }

        public Component getTableCellRendererComponent(JTable table,
            Object value, boolean isSelected, boolean hasFocus, int row,
            int column) 
        {
            JPanel    jContentPane = new JPanel();
            //System.out.println(value.toString());
          if(value.toString().equals("Operation1") || value.toString().equals("Operation2")|| value.toString().equals("Operation2")|| value.toString().equals("Operation3")|| value.toString().equals("Operation4")|| value.toString().equals("Operation5"))
          {
          
                GridLayout gridLayout = new GridLayout();
                gridLayout.setRows(1);
                jContentPane = new JPanel();
                jContentPane.setLayout(gridLayout);
                jContentPane.add(new JButton(new ImageIcon("plus.gif")), null);
                jContentPane.add(new JButton(new ImageIcon("minus.gif")), null);
          }    
          else
          {
              jContentPane.add(new JLabel(""));
              jContentPane.setBackground(Color.white);
          }
          return jContentPane;
        }
}


une methode que j'ai mis dans ma classe qui hérite de JXTreeTable

public void ajouterBoutons()
    {
        this.getColumn(3).setCellRenderer(new MesBoutons(""));
    }


Et enfin un appel tout simple sur ma table
treeTable.ajouterBoutons();