2009-06-17 9 views
0

Bonjour, J'ai créé le code suivant. Le problème est que l'image ne s'affiche pas dans la colonne JTable.L'image ne s'affiche pas dans JTable (Java Swing)

Je développe le DefaultTableModel et remplace la méthode getColumnClass. Il a été suggéré que c'était une façon de le faire. Des indices? le code est ci-dessous.

//package javaapplication12; 

import javax.swing.*; 

public class NewJFrame2 extends javax.swing.JFrame { 

    /** Creates new form NewJFrame */ 
    public NewJFrame2() { 
     initComponents(); 
    } 


    public class imageTableModel extends javax.swing.table.DefaultTableModel 

    { 
     imageTableModel(Object[][] data, Object[] columnNames) 
     { 
      super(data,columnNames); 
     } 

@Override 
     public Class getColumnClass(int column) 
     { 

      if (column == 0) 
     { 

       return ImageIcon.class; 
     } 
      return Object.class; 
    // other code; default to Object.class 
     } 
    } 


    private void initComponents() { 

     jScrollPane1 = new javax.swing.JScrollPane(); 
     jTable1 = new javax.swing.JTable(); 

     setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); 

     jTable1.setModel(new imageTableModel(
      new Object [][] { 
       {new ImageIcon("simply.jpg"), "pp"}, 

      }, 
      new String [] { 
       "image", "name" 
      } 
     )); 
     jScrollPane1.setViewportView(jTable1); 


     javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); 
     getContentPane().setLayout(layout); 
     layout.setHorizontalGroup(
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addGroup(layout.createSequentialGroup() 
       .addContainerGap() 
       .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 375, javax.swing.GroupLayout.PREFERRED_SIZE) 
       .addContainerGap(19, Short.MAX_VALUE)) 
     ); 
     layout.setVerticalGroup(
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addGroup(layout.createSequentialGroup() 
       .addContainerGap() 
       .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 275, javax.swing.GroupLayout.PREFERRED_SIZE) 
       .addContainerGap(19, Short.MAX_VALUE)) 
     ); 

     pack(); 
    }// </editor-fold> 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String args[]) { 
     java.awt.EventQueue.invokeLater(new Runnable() { 
      public void run() { 
       new NewJFrame2().setVisible(true); 
      } 
     }); 
    } 

    // Variables declaration - do not modify 
    private javax.swing.JScrollPane jScrollPane1; 
    private javax.swing.JTable jTable1; 
    // End of variables declaration 

} 
+1

en double de http://stackoverflow.com/questions/1006921/how-do-i-get-a-an-image-to-display-in-jtable -in-java-swing/1006948 # 1006948. N'avez-vous même pas essayé l'une des réponses suggérées? – Mark

+0

J'ai essayé de prendre la route la plus facile. Si vous google cellule image jtable. Il vous dirige vers http://www.coderanch.com/t/345266/Swing-AWT-SWT-JFace/java/Image-JTable-Cell –

Répondre

3

C'est la bonne façon de le faire, mais votre jpg n'est pas trouvé correctement. Changez votre code pour le rechercher comme URL de ressource et il devrait le trouver correctement. Le changement suivant a parfaitement fonctionné sur ma machine:

jTable1.setModel(new imageTableModel(
     new Object [][] { 
      {new ImageIcon(getClass().getClassLoader().getResource("simply.jpg")), "pp"}, 

     }, 
     new String [] { 
      "image", "name" 
     } 
    )); 
+0

Vous avez raison .... merci MrWiggles –

+0

N'hésitez pas à marquer comme la bonne réponse :) – tddmonkey

Questions connexes