Suite de la situation: J'ai une table J (X) avec RowHeader (Comme guideline j'ai utilisé un de Rob Camicks grand Examples). Tout a fonctionné comme prévu.Comment gérer RowSorter-Synchronization dans JTables avec RowHeader?
Par condition que les données que je reçois de serveur contient déjà un tablerownumber, que je dois montrer dans le RowHeader et les données doivent être filtrables. J'ai donc étendu l'exemple, et j'ai ajouté un filtre. Lorsque j'ai filtré la vue, j'ai vu des trous dans les numéros de ma rangée (par exemple: 1, 3, 6, ..), ce qui est l'effet désiré.
Pour être en mesure de filtrer et trier la table par mon propre tablerow, j'ai ajouté un TableRowSorter
. Et ici j'ai commencé à être confus. L'exemple utilise le même TableModel et SelectionModel pour maintable et rowHeaderTable:
setModel(main.getModel());
setSelectionModel(main.getSelectionModel());
Cela tombe bien, puisque je n'ai pas de les synchroniser. Mais concernant TableRowSorter
je ne étais pas tout à coup sûr, si je peux aussi ou même avoir à utiliser le même TableRowSorter
-Instance ou si je dois créer un TableRowSorter
pour chaque table. D'abord, j'ai ajouté la même chose aux deux tables, puisque cela semblait pratiquement, mais ensuite j'ai eu IndexOutOfBound-Exceptions
dans de nombreux cas. Après quelques recherches j'ai découvert que c'est parce que le TableRowSorter
est mis à jour deux fois à chaque TableModelEvent
, parce que chaque table (RowHeader et MainTable) notifie le TableRowSorter
au sujet des changements de tablier par lui-même. Maintenant, je ne suis pas sûr que la bonne façon d'y aller est. Les solutions suivantes me sont venues à l'esprit: Dois-je ajouter un second TableRowSorter (un pour chaque table) et les synchroniser, ou devrais-je envelopper le TableModel dans le RowHeaderTable et ne pas laisser d'événements? Ou peut-être devrais-je créer mon propre type de RowHeaderTable qui n'informe pas Sorters de tout changement?
Avez-vous essayé d'utiliser un trieur de ligne distincte pour chaque table? Je sais, vous devez le synchroniser, mais cela peut vous aider à surmonter l'obstacle initial. – MadProgrammer
@ymene [voir ma vue de RowHeader (deux JTables, deux XxxModels, un écouteur pour deux notificateurs)] (http: // stackoverflow .com/a/8187799/714968), il n'y a que RowFilter, [vous pouvez essayer votre propre vue de RowSorter] (http://stackoverflow.com/a/16664124/714968), [si sans succès] (http://stackoverflow.com/a/11280226/714968) puis poster, je pense que cela doit être basé sur votre [SSCCE] (http://sscce.org/), ou attendre (@camickr), btw de toute façon (celui-ci) pourrait être très agréable question +1 – mKorbel
pouvez-vous montrer un SSCCE où il souffle?Je me souviens d'avoir eu une discussion similaire (mais pas son résultat et ne peut pas le trouver) - et un exemple très simple - avec RowSorter partagé - semble se conduire bien. – kleopatra