1 / 6

JTable

JTable. JTable. Object[][] data = { {"Mary", "Campione", "Snowboarding", new Integer(5), new Boolean(false)}, {"Alison", "Huml", "Rowing", new Integer(3), new Boolean(true)}, {"Kathy", "Walrath", "Chasing toddlers", new Integer(2), new Boolean(false)},

tanith
Download Presentation

JTable

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. JTable

  2. JTable Object[][] data = { {"Mary", "Campione", "Snowboarding", new Integer(5), new Boolean(false)}, {"Alison", "Huml", "Rowing", new Integer(3), new Boolean(true)}, {"Kathy", "Walrath", "Chasing toddlers", new Integer(2), new Boolean(false)}, {"Mark", "Andrews", "Speed reading", new Integer(20), new Boolean(true)}, {"Angela", "Lih", "Teaching high school", new Integer(4), new Boolean(false)} }; String[] columnNames = { "First Name", "Last Name", "Sport", "# of Years", "Vegetarian"}; JTable table = new JTable(data, columnNames); • JTable un composant Swing complexe pour présenter et éditer des données sous forme de table.

  3. JTable • Deux constructeurs qui acceptent directement des données : • JTable(Object[][] rowData, Object[] columnNames) • JTable(Vector rowData, Vector columnNames) • Simplicité • Mais • chaque cellule est éditable • traite toutes les données de manière identique (affichage sous forme de String quel que soit le type de la donnée) • Si les données ne sont pas déjà sous la forme d’un tableau (ou d’un Vector) nécessité de les transposer dans une telle structure

  4. Le fameux modèle* MVC (Model View Controler) issu de SmallTalk * design pattern Modèle JTableModel JTable Vue Contrôleur JTable • Si les données ne sont pas déjà sous une forme « tabulaire » et/ou si on ne veut pas avoir les restrictions précédentes il faut fournir un objet TableModel au composant JTable qui permet à l’objet JTable de découvrir la valeur de chaque cellule : • JTable(TableModel data) • public void setModel(TableModel data) • JTable ne contient pas les données mais c’est une vue sur les données« JTable doesn’t contain or cache data; it’s simply a view of your data. »

  5. JTable JTableModel • JTableModel • interface définie dans le package javax.swing.table • intermédiaire entre le composant JTable et les données qu’il affiche • tout composant JTable utilise un objet qui implémente JTableModel pour encapsuler les données qu’il visualise. Modèle Class getColumnClass(int columnIndex) int getColumnCount() String getColumnName(int columnIndex) int getRowCount() Object getValueAt(int rowIndex, int columnIndex) JTable Contrôleur Vue boolean isCellEditable(int rowIndex, int columnIndex) void setValueAt(Object aValue, int rowIndex, int columnIndex) void addTableModelListener(TableModelListener l) void removeTableModelListener(TableModelListener l)

  6. Implémentation partielle de JTableModel, seules demeurent abstraites : • int getColumnCount() • int getRowCount() • Object getValueAt(int rowIndex, int columnIndex) • Pour une application nécessitant un table non éditable il suffit de donner une implémentation • à ces méthodes AbstractTableModel DefaultTableModel Implémentation « simple » de JTableModel lorsque les données sont exprimées sous la forme de tableaux (ou vecteurs) de lignes, chaque ligne étant elle même un tableau (ou un vecteur) d’objets. Les constructeurs JTable(Object[][] rowData, Object[] columnNames) et JTable(Vector rowData, Vector columnNames)initialisent et utilisent un objet DefaultTableModel JTable < interface> JTableModel

More Related