Ligne de pied de page dans un JTable
Quel est le meilleur moyen de mettre une rangée de pied de page dans un JTable? Quelqu'un at-il un exemple de code pour faire cela?
La seule approche que j'ai pensé jusqu'à présent est de mettre une ligne dans la table de modèle qui sont toujours triés sur le fond.
Voici ce que j'ai:
JTable mainTable = new JTable(mainTableModel);
JTable footerTable = new JTable(footerModel);
footerTable.setColumnModel(mainTable.getColumnModel());
//Disable selection in the footer. Otherwise you can select the footer row
//along with a row in the table and that can look quite strange.
footerTable.setRowSelectionAllowed(false);
footerTable.setColumnSelectionAllowed(false);
JPanel tablePanel = new JPanel();
BoxLayout boxLayout = new BoxLayout(tablePanel, BoxLayout.Y_AXIS);
tablePanel.setLayout(boxLayout);
tablePanel.add(mainTable.getTableHeader()); //This seems like a bit of a WTF
tablePanel.add(mainTable);
tablePanel.add(footerTable);
De tri fonctionne très bien mais la sélection de la ligne de pied de page est un peu étrange.
OriginalL'auteur Luke Quinane | 2009-06-11
Vous devez vous connecter pour publier un commentaire.
Essayez d'utiliser un second JTable qui utilise la même colonne modèle de votre tableau de données et ajouter votre pied de page données de cette table. Ajouter le deuxième (pied de page) de la table sous votre table d'origine.
Ce poste vous permet de synchroniser les deux tables stackoverflow.com/questions/2666758/...
JideScrollPane fonctionne beaucoup mieux et évite tous les problèmes de l'avoir à synchroniser les événements que les tables de feu. Voir ma réponse ci-dessous.
OriginalL'auteur objects
Ressemble à ceci projet a un composant appelé JideScrollPane qui fait de la publicité de soutien pour une rangée de pied de page. Je n'ai pas essayé moi-même, mais il semble que c'est exactement ce que vous voulez!
Le site a aussi une démo app où vous pouvez la voir en action et il semble assez bon.
Noter qu'il semble que beaucoup de leurs trucs que vous avez à payer pour, mais leur JideScrollPane l'air d'être gratuit et open source.
OriginalL'auteur Umi
À l'aide des 2 tableaux ci-dessous les uns les autres est une bonne approche.
Si vous voulez être en mesure de redimensionner/déplacer/supprimer des colonnes, la clé est de ne PAS réutiliser le même columnModel entre les tables. Avoir un écouteur ne le redimensionnement. Voir l'exemple:
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
OriginalL'auteur Jens
La seule fois où je l'ai fait j'ai juste ajouté une ligne dans le modèle comme suit:
_tableContents est bien sûr les données réelles derrière mon modèle. Vous devez être conscients de la ligne supplémentaire dans le modèle de cours (dans de tels appels à la setValueAt(...))
Bonne chance.
OriginalL'auteur javamonkey79
Vous pouvez essayer de la mise en œuvre de votre propre TableCellRenderer qui remplace le rendu du contenu de la dernière ligne visible avec votre pied de page. Cependant cela ne doit pas être fixé à la partie inférieure de la table, il sera probablement se déplacer vers le haut et vers le bas pour faire défiler.
OriginalL'auteur Cogsy
Je suppose que la meilleure approche (mais certainement pas le plus facile) serait de prendre un coup d'oeil au code source pour le
JTableHeader
Composant, voir comment il fonctionne et ensuite créer votre propreJTableFooter
Composant. Vous pouvez ré-utiliser leJTableHeader
de l'INTERFACE utilisateur Délégué pour le pied de page, je pense que les principales différences seraient dans legetHeaderRect()
méthode, où il détermine les limites d'un en-tête de colonne de tuiles.OriginalL'auteur ninesided
Voici une autre solution mentionnée dans le bug de java de base de données
OriginalL'auteur Dinesh Bhat
OriginalL'auteur johnny