import java.awt.BorderLayout; import java.awt.event.MouseAdapter; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.WindowConstants; import javax.swing.table.DefaultTableModel; public class Swing3 { private static final int imageHeight = 30; // hauteur de ligne private JTable table; public static void main (String[] args) { new Swing3 ().initialize (); } public void initialize () { JFrame frame = new JFrame (); frame.setTitle ("Exemple de JTable"); ImageIcon icon1 = new ImageIcon ("img/edit.png"); ImageIcon icon2 = new ImageIcon ("img/delete.png"); ImageIcon icon3 = new ImageIcon ("img/call.png"); Object[] entete = { "Edit", "Delete", "Call", "Id", "Lastame", "Firstname", "IPAddress" }; Object[][] donnees = { { icon1, icon2, icon3, "1", "Dupont", "Pierre", "192.168.1.122" }, { icon1, icon2, icon3, "2", "Durand", "Jacques", "192.168.1.123" } }; DefaultTableModel tableModel = new DefaultTableModel (donnees, entete) { private static final long serialVersionUID = 756473841910394607L; @SuppressWarnings ({ "unchecked", "rawtypes" }) @Override public Class getColumnClass (int column) { if (column < 3) return ImageIcon.class; return Object.class; } }; table = new JTable (tableModel); table.setRowHeight (imageHeight); table.setAutoResizeMode (JTable.AUTO_RESIZE_OFF); table.getColumn ("Edit").setPreferredWidth (30); table.getColumn ("Delete").setPreferredWidth (30); table.getColumn ("Call").setPreferredWidth (30); table.getColumn ("Id").setPreferredWidth (30); table.getColumn ("Lastame").setPreferredWidth (100); table.getColumn ("Firstname").setPreferredWidth (100); table.getColumn ("IPAddress").setPreferredWidth (100); table.addMouseListener (new MouseAdapter () { @Override public void mouseClicked (java.awt.event.MouseEvent evt) { int row = table.rowAtPoint (evt.getPoint ()); int col = table.columnAtPoint (evt.getPoint ()); if (row >= 0 && col >= 0) { switch (col) { case 0: System.out.println ("Edit " + table.getValueAt (row, 3)); break; case 1: System.out.println ("Delete " + table.getValueAt (row, 3)); break; case 2: System.out.println ("Call " + table.getValueAt (row, 3)); break; default: break; } } } }); frame.add (new JScrollPane (table), BorderLayout.CENTER); frame.setDefaultCloseOperation (WindowConstants.DISPOSE_ON_CLOSE); frame.pack (); frame.setVisible (true); } }