2010-05-05 4 views
0

J'essaye de construire une petite table pour montrer des rendez-vous. Voici ce que j'ai jusqu'ici. Peut-être pourriez-vous me donner un indice sur ce que je fais de mal ou sur le chemin à suivre.Java Swing: Comment fonctionne une JTable?

  public class AppointmentTable extends JFrame{ 


     public static void main(String[] args) { 
      JTable table = new JTable(new AppointmentTableModel(10, 6, new ArrayList<Appointment>())); 
      JScrollPane scrollPane = new JScrollPane(table); 
      table.setFillsViewportHeight(true); 
      AppointmentTable frame = new AppointmentTable(); 
      frame.add(scrollPane); 
      frame.setVisible(true); 
     } 
    public class AppointmentTable extends JFrame{ 


    public static void main(String[] args) { 
     JTable table = new JTable(new AppointmentTableModel(10, 6, new ArrayList<Appointment>())); 
     JScrollPane scrollPane = new JScrollPane(table); 
     table.setFillsViewportHeight(true); 
     AppointmentTable frame = new AppointmentTable(); 
     frame.add(scrollPane); 
     frame.setVisible(true); 
    } 
    } 

    public class AppointmentTableModel extends AbstractTableModel { 
     private int columns; 
     private int rows; 
     ArrayList<Appointment> appointments; 

     public AppointmentTableModel(int columns, int rows, 
       ArrayList<Appointment> appointments) { 
      this.columns = columns; 
      this.rows = rows; 
      this.appointments = appointments; 
     } 

     @Override 
     public int getColumnCount() { 

      return columns; 
     } 

     @Override 
     public int getRowCount() { 

      return rows; 
     } 

     @Override 
     public Object getValueAt(int rowIndex, int columnIndex) { 

      return appointments.get(rowIndex).getByColumn(columnIndex); 
     } 
    } 

public class Appointment { 

    private Date date; 
    private Sample sample; 
    private String comment; 
    private ArrayList<Action> history; 

    public Appointment(Date date, Sample sample, String comment) { 
     this.date = date; 
     this.sample = sample; 
     this.comment = comment; 
     this.history = new ArrayList<Action>(); 
    } 

    public Object getByColumn(int columnIndex) { 
     switch (columnIndex) { 
     case 0: return date; 

     case 1: return date; 

     case 2: return sample; 

     case 3: return sample; 

     case 4: return history; 

     case 5: return comment; 


     } 
     return null; 
    } 

} 
public class Action { 
String action; 

public Action(String act){ 
    this.action=act; 
} 

} 
+0

Le meilleur conseil que quelqu'un peut vous donner à ce sujet (mais ce n'est pas une réponse directe au problème avec votre code) serait d'utiliser GlazedLists (open source) qui fournira le modèle pour vous. Notez qu'il est conseillé d'utiliser Java Beans pour votre classe Appointment (avec les méthodes get/set) plutôt que d'utiliser getByColumn() qui mélange l'interface utilisateur graphique (index de colonne dans une table) avec l'entreprise (données de rendez-vous). – jfpoilpret

Répondre

1

Première méthode, getRowCount() de votre modèle est incorrect, il devrait être

public int getRowCount() { 
    return appointments.size(); 
} 

, vous êtes alors de transmettre une liste de rendez-vous vide à votre modèle, de sorte que le tableau ne montre rien!

JTable table = new JTable(new AppointmentTableModel(10, 6, new ArrayList<Appointment>())); 

Initialisez votre liste avec certaines données avant de créer la table.

Questions connexes