/* XmpJTable.java utilisation d'une JTable initialisation d'un tableau 2D (Object[][]) */ import javax.swing.* ; // JFrame, JTable, JScrollPane, JPanel, import java.awt.*; import java.awt.event.*; public class XmpJTable extends JFrame { public XmpJTable() { super("XmpJTable"); Object[][] cellules2d = { {"Marie", "Champion", "Snowboard", new Integer(5), new Boolean(false)}, {"Abel", "Surleau", "Aviron", new Integer(3), new Boolean(true)}, {"Bob", "Dindon", "Danse", new Integer(2), new Boolean(false)}, {"Mark", "Latable", "Pingpong", new Integer(20), new Boolean(true)}, {"Angèle", "Surglace", "Patinage", new Integer(4), new Boolean(false)} }; String[] nomCols = { "Prénom", "Nom", "Sport", "# années de pratique", "Vegetarien"}; // Table swing, dans un panneau avec défilement JTable table = new JTable(cellules2d, nomCols); JScrollPane panneau = new JScrollPane(table); table.setPreferredScrollableViewportSize(new Dimension(500,70)); // Intégrer le panneau dans la fenêtre; ajouter barre d'état. getContentPane().add(panneau, BorderLayout.CENTER); JLabel etat=new JLabel("Cliquer dans la table ..."); getContentPane().add(etat, BorderLayout.SOUTH); // Sensibilités aux événements // Table: dimensions et réflexe si clic dessus table.addMouseListener( new RefSouris(table) ); // Pour fermer la fenetre addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) {System.exit(0);} }); } // public static void main(String[] args) { XmpJTable fen = new XmpJTable(); fen.pack(); fen.setLocation( 100, 100); fen.setVisible(true); } /** Utilitaire: affichage */ void a( String txt) {System.out.print(txt);} /** Réflexe associé au clic souris (classe interne) Un champ mémorise la table swing */ class RefSouris extends MouseAdapter { private JTable table; RefSouris(JTable t) { table=t; } public void mouseClicked(MouseEvent e) { afficherDonnees(); } private void afficherDonnees() { int i,j, numLigs = table.getRowCount(), numCols = table.getColumnCount(); javax.swing.table.TableModel modele = table.getModel(); a("\nLa table:"); for ( i=0; i < numLigs; i++) { a("\n ligne " + i + ":"); for ( j=0; j < numCols; j++) a(" " + modele.getValueAt(i, j)); } a("\n"); } } // fin class RefSouris } // fin class XmpJTable