====== JTable ======
===== Qu'est-ce qu'une JTable ? =====
Une JTable est un composant graphique qui permet de présenter un
ensemble de données sous forme tabulaire.
Cette présentation à visée
de **consultation** pourra donner lieu à **mise à jour**, **suppression**, **insertion**
selon les souhaits du développeur.
L’ensemble des valeurs présentées proviendra le plus souvent
d’instances d’objets dont on obtiendra une représentation tableau.
===== Déposer une JTable =====
Dès que l'on dispose d'un container graphique, par exemple, une **JFrame**, on peut créer une JTable en mode **Design**:
{{bloc2:prog:poo:jtable-create.png|Déposer une JTable}}
===== Paramétrer la JTable =====
Commencer par adapter le nom de la JTable dans l'onglet **code**
{{bloc2:prog:poo:jtable_properties_code.png?400|}}
Une JTable est un composant graphique qui affiche des données sous forme tabulaire. En vertu des principes de structuration du code, les données à afficher dans le JTable ne sont pas portées par la JTable elle-même mais par un composant non graphique spécialisé (un modèle ... ça vous rappelle quelque chose ...?), ici un **DefaultTableModel**.
Pour alimenter la JTable en données, il faudra donc **créer un attribut de type DefaultTableModel** et le paramétrer. C'est le modèle qui fournira la structure des données en colonnes et en lignes.
public class MainWindow{
private DefaultTableModel tableModel; // attribut modèle
...
public MainWindow() {
initComponents();
tableModel= new DefaultTableModel(); // instanciation du modèle
// définition des colonnes en nombre et en intitulés
String header[] = new String[] {"Colonne1", "Colonne2", "Colonne3"};
tableModel.setColumnIdentifiers(header);
...
}
...
}
===== Alimenter la JTable =====
==== Les fonctionnalités essentielles ====
| //tableModel//.**addRow**(Object[] data) | Permet d'ajouter une nouvelle ligne \\ dans le modèle |
| //tableModel//.**setRowCount**(0) | Permet de vider le modèle, si besoin|
| //tableModel//.**setDataVector**(Object[][] data, Object[] headers) | Permet d'alimenter le modèle à partir \\ d'un tableau déjà existant et un tableau \\ des entêtes |
| //jtable//.**setmodel**(DefaultTableModel model) | Associe le modèle et la JTable |
==== Exemple d'usage ====
tableModel.setRowCount(0);
tableModel.addRow(new Object[]{"Henaff", "Nathan", 19, "Chaptal"});
jTable.setModel(tableModel);
==== Autre exemple d'usage ====
Object [][] data = new Object [][] {
{"Henaff", "Nathan", 19, "Chaptal"},
{"Henriot", "Titouan", 20, "Chaptal"},
{"Le Gars", "Thibault", 18, "Chaptal"}
}
String header[] = new String[] {"Nom", "Prénom", "Age", "Etablissement"};
tableModel.setDataVector(data, headers);
jTable.setModel(tableModel);
==== Exemple de résultat ====
{{bloc2:prog:poo:jtable_rendu.png?400|}}