2010-11-30 40 views
0

J'ai un modèle de table par défaut triable avec ListSelectionListener qui écoute un double clic puis ouvre une vue détaillée d'une colonne particulière. Cela fonctionne bien, cependant, lorsque je trier une colonne, l'écouteur ne fonctionne plus.Le tri d'une table casse le TableRowListener?

JTable foosTable = new JTable(model); 
TableRowSorter<TableModel> fooSorter = new TableRowSorter<TableModel>(model); 
foosTable.setRowSorter(fooSorter); 
ListSelectionModel listMod = foosTable.getSelectionModel(); 
listMod.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); 
ListSelectionListener barListener = new ListSelectionListener(foosTable); 
listMod.addListSelectionListener(barListener); 
+1

pouvez-vous montrer du code s'il vous plaît? Merci. –

+1

Je n'ai jamais entendu parler de TableRowListener. – camickr

+0

@camickr. il semble être dans le paquet org.smir.util.table http://andi-smirre.ath.cx/javadoc/org.smir.util.table/org/smir/util/table/TableRowListener.html Ne l'a jamais utilisé moi même. –

Répondre

1

Je ne l'ai jamais utilisé TableRowListener qui semble avoir seulement un événement itemChanged. Je m'en tiens généralement au swing standard. Ajoutez un écouteur souris à la table, récupérez l'emplacement d'un événement click puis manipulez-le.

jTable.addMouseListener(new java.awt.event.MouseAdapter() { 
    public void mouseClicked(java.awt.event.MouseEvent evt) { 
     Point p = new Point(evt.getX(), evt.getY()); 
     int col = jTable.columnAtPoint(p); 
     int row = jTable.rowAtPoint(p); 
     if (evt.getButton() == MouseEvent.BUTTON1) 
     { 
      if (evt.getClickCount() >= 2) 
      { 
       ... 
       ... 
      } 
     }); 

Modifier Installation d'un TableRowSorter:

TableRowSorter<YourJTableModel> sorter = 
     new TableRowSorter<YourJTableModel>(yourJTableModel); 
    jTable.setRowSorter(sorter); 

Parce que vous changez l'ordre de ligne, vous devez utiliser convertColumnIndexToModel pour obtenir les données de modèle correct pour la vue.

Pour des besoins de tri/filtrage plus complexes, vous pouvez essayer glazed lists.

+0

La table est-elle triable? – davidahines

+1

Oui, voir la modification. –

+0

Muchos Gracias Amigo. – davidahines