JTable dispose déjà d'un moteur de rendu par défaut pour les icônes. Vous avez juste besoin de dire à la table ce que les données sont stockées dans une colonne donnée, de sorte qu'il peut choisir le moteur de rendu. Ceci est fait en remplaçant la getColumnClass(...) méthode:
import java.awt.*;import javax.swing.*;import javax.swing.table.*;publicclassTableIconextendsJPanel{publicTableIcon(){Icon aboutIcon =newImageIcon("about16.gif");Icon addIcon =newImageIcon("add16.gif");Icon copyIcon =newImageIcon("copy16.gif");String[] columnNames ={"Picture","Description"};Object[][] data ={{aboutIcon,"About"},{addIcon,"Add"},{copyIcon,"Copy"},};DefaultTableModel model =newDefaultTableModel(data, columnNames){// Returning the Class of each column will allow different// renderers to be used based on ClasspublicClass getColumnClass(int column){return getValueAt(0, column).getClass();}};JTable table =newJTable( model );
table.setPreferredScrollableViewportSize(table.getPreferredSize());JScrollPane scrollPane =newJScrollPane( table );
add( scrollPane );}privatestaticvoid createAndShowGUI(){JFrame frame =newJFrame("Table Icon");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(newTableIcon());
frame.setLocationByPlatform(true);
frame.pack();
frame.setVisible(true);}publicstaticvoid main(String[] args){EventQueue.invokeLater(newRunnable(){publicvoid run(){
createAndShowGUI();}});}}
JTable dispose déjà d'un moteur de rendu par défaut pour les icônes. Vous avez juste besoin de dire à la table ce que les données sont stockées dans une colonne donnée, de sorte qu'il peut choisir le moteur de rendu. Ceci est fait en remplaçant la getColumnClass(...) méthode:
Créer la imageicon:
Ou vous pouvez essayer des raisons impérieuses le rendu de votre champ de l'icône: