====== 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|}}