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 :

Insertion imageIcon dans JTable


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de krolineeee
    Inscrit en
    Mars 2006
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 232
    Par défaut Insertion imageIcon dans JTable
    Bonjour,

    J'ai un petit problème, j'essaye en vain d'insérer une image dans une cellule d'un JTable mais j'obtiens le message d'erreur suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.lang.ArrayStoreException: javax.swing.ImageIcon
    Je vous donne un bout de code, histoire de vous aiguiller un peu :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
          ImageIcon imageDelM = new ImageIcon(gestionmessagequeue.GeneralMQ.class.
                                       getResource("im_delete.gif"));
          TableModelX model = new TableModelX(messages,entete);
          for (int i=0;i<nbM; i++)
            model.setValueAt(imageDelM,i,2);
     
          tabMsg = new JTableX(model);
          tabMsg.setTableEditable(false);
          tabMsg.getTableHeader().setReorderingAllowed(false);
    Merci pour vos lumières

  2. #2
    Membre Expert
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Par défaut
    Je dis peut-être une connerie mais cela ne viendrait du fait que ton image n'hérite pas de Component ?

  3. #3
    Membre confirmé Avatar de krolineeee
    Inscrit en
    Mars 2006
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 232
    Par défaut
    Citation Envoyé par iohack
    Je dis peut-être une connerie mais cela ne viendrait du fait que ton image n'hérite pas de Component ?
    Heu là je ne vois pas le rapport...

  4. #4
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Citation Envoyé par iohack
    Je dis peut-être une connerie mais cela ne viendrait du fait que ton image n'hérite pas de Component ?
    Je crois que tu as raison... Une image n'est qu'un objet et pas un composant graphique, il faut que tu emploies un composant qui affiche l'image que tu veut...

    Par exemple, le JXImagePanel de SwingX ou tout autre composant qui affiche une image et que tu remplaces l'image dans ton modèle par le composant.

    Je suis pas tout à fait sûr, mais tu risques rien à essayer

  5. #5
    Membre confirmé Avatar de krolineeee
    Inscrit en
    Mars 2006
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 232
    Par défaut
    Heu.....
    J'ai du mal à vous suivre, mon imageIcon n'hérite pas de component bien sur mais JLabel hérite bien de component, et c'est dans un JLabel que je met mon image dans mon TableCellRenderer que voici:

    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
    class TableCellRendererX extends DefaultTableCellRenderer
        {
            public Object value;
            public Component getTableCellRendererComponent(
                    JTable table, Object value, boolean isSelected,
                    boolean hasFocus, int row, int col)
            {
                this.value=value;
                //this.repaint();
                //Couleur de fond et de police pour les lignes selectionnées
                Color BACKGROUND_SELECTED = Color.YELLOW;
                Color FOREGROUND_SELECTED = Color.BLUE;
                //Couleur de fond et de police pour les lignes non-selectionnées
                Color BACKGROUND = Color.WHITE;
                Color FOREGROUND = Color.BLACK;
                // on utilise le renderer super qui va tenir compte de
                // tout ce qu'on a besoin (sélection, focus...)
                JLabel comp = (JLabel) super.getTableCellRendererComponent(table, value,
                        isSelected, hasFocus, row, col);
                if (isSelected)
                {
                    this.setBackground(BACKGROUND_SELECTED);
                    this.setForeground(FOREGROUND_SELECTED);
                    this.setHorizontalAlignment(JLabel.CENTER);
                }
                else if (value instanceof ImageIcon) { 
                    System.out.println("toto");
                    ImageIcon imge = (ImageIcon)value; 
                    comp.setText(null);            
                    comp.setIcon(imge);
                }
                else
                {
                    comp.setBackground(m_cBgColor[row][col]);
                    this.setForeground(FOREGROUND);
                    this.setHorizontalAlignment(JLabel.CENTER);
                }
                return this;
            }
     
        }
    Mais l'erreur java.lang.ArrayStoreException: javax.swing.ImageIcon n'est pas liée à ça (je pense). Elle se déclenche bien avant de passer dans le tableCellRenderer...

  6. #6
    Membre Expert
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Par défaut
    Et l'interpréteur ne te dis pas à quelle ligne est levée l'exception ?

  7. #7
    Membre confirmé Avatar de krolineeee
    Inscrit en
    Mars 2006
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 232
    Par défaut
    Citation Envoyé par iohack
    Et l'interpréteur ne te dis pas à quelle ligne est levée l'exception ?
    L'exception est levée à la méthode setValueAt(Object value, int row, int col)

    Seulement j'y arrive dans un projet, et dans l'autre ca pète....

  8. #8
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Citation Envoyé par krolineeee
    Mais l'erreur java.lang.ArrayStoreException: javax.swing.ImageIcon n'est pas liée à ça (je pense). Elle se déclenche bien avant de passer dans le tableCellRenderer...
    Tu peut nous montrer ton modèle ?

    ArrayStoreException ca veut dire que tu ne mets pas le bon type d'objet dans un tableau.

  9. #9
    Membre confirmé Avatar de krolineeee
    Inscrit en
    Mars 2006
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 232
    Par défaut
    Citation Envoyé par wichtounet
    Tu peut nous montrer ton modèle ?

    ArrayStoreException ca veut dire que tu ne mets pas le bon type d'objet dans un tableau.
    Voilà le model :
    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
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    package jtablex;
     
    import javax.swing.table.*;
     
    public class TableModelX extends AbstractTableModel {
     
        protected Object[][] m_odatas;
        protected boolean[][] m_bCellEditable;
        protected String[] m_stitres;
        protected boolean IS_EDITABLE = false;
        protected int m_iNbCol;
        protected int m_iNbRow;
     
        public TableModelX(Object[][] datas, String[] titres) {
            this.m_odatas = datas;
            this.m_stitres = titres;
            initCellEditable();
        }
     
        protected void initCellEditable() {
            m_iNbCol = m_stitres.length;
            m_iNbRow = m_odatas.length;
            m_bCellEditable = new boolean[m_iNbRow][m_iNbCol];
            for (int r = 0; r < m_iNbRow; r++) {
                for (int c = 0; c < m_iNbCol; c++) {
                    m_bCellEditable[r][c] = true;
                }
            }
     
        }
     
        public Object[][] getDatas() {
            return m_odatas;
        }
     
        public String[] getEntetes() {
            return m_stitres;
        }
     
     
        public int getRowCount() {
            return m_odatas.length;
        }
     
        public int getColumnCount() {
            return m_stitres.length;
        }
     
        public Object getValueAt(int row, int col) {
            Object o = m_odatas[row][col];
            if (o != null)
                return o;
            else
                return "";
        }
     
        public void setValueAt(Object value, int row, int col) {
            System.out.println("class:"+value.getClass().getName()+"   value:"+value);
            m_odatas[row][col] = value;
        }
     
        public Class getColumnClass(int col) {
            return getValueAt(0, col).getClass();
        }
     
     
        public boolean isCellEditable(int row, int col) {
            return m_bCellEditable[row][col];
        }
     
     
        public void setCellEditable(boolean editable, int row, int col) {
            m_bCellEditable[row][col] = editable;
        }
     
        public void setCellEditable(int row, int col, boolean editable) {
            m_bCellEditable[row][col] = editable;
        }
     
       public void setRowEditable(int row, boolean editable) {
            for (int c = 0; c < m_iNbCol; c++)
                m_bCellEditable[row][c] = editable;
        }
     
        public void setColumnEditable(int col, boolean editable) {
            for (int r = 0; r < m_iNbRow; r++)
                m_bCellEditable[r][col] = editable;
        }
        public void setTableEditable(boolean editable) {
           for (int r = 0; r < m_iNbRow; r++)
               for (int c = 0; c < m_iNbCol; c++)
                   m_bCellEditable[r][c] = editable;
       }
     
     
       public String getColumnName(int col) {
            return m_stitres[col];
        }
    }

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

Discussions similaires

  1. Insertion d'une JTable dans une JTable
    Par Dark_TeToN dans le forum Composants
    Réponses: 16
    Dernier message: 14/10/2010, 16h18
  2. [debutant] ajouter ImageIcon dans un Jbutton
    Par agugu dans le forum Composants
    Réponses: 4
    Dernier message: 25/04/2004, 22h40
  3. Insertion enregistrement dans table
    Par naidinp dans le forum ASP
    Réponses: 13
    Dernier message: 11/09/2003, 09h56
  4. [web] insertion javascript dans du perl
    Par laluna dans le forum Web
    Réponses: 3
    Dernier message: 28/07/2003, 09h50
  5. [TP]Insertion texte dans un autre programme
    Par FLB dans le forum Turbo Pascal
    Réponses: 53
    Dernier message: 14/06/2003, 20h11

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