/* 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