Ajouter une colonne à la sortie de TableModel
J'ai une classe;
public class A extends AbstractTableModel
{
...
}
À l'aide de ResultSetMetaData-je construire le TableModel pour correspondre à mon jeu de résultats à partir de la base de données.
public class B extends JPanel
{
...
}
Dans classe B où je étend Composite et ajouté classe Un pour montrer à ma table.
Je veux être en mesure d'ajouter de nouvelles colonnes de la base sur une condition pour le modèle de table. J'ai essayé de googler autour, mais la plupart des exemple ci sont basés sur le DefaultTableModel
pas AbstractTableModel
.
Faire ce que quelqu'un sait comment faire?
OriginalL'auteur Bitmap | 2011-07-22
Vous devez vous connecter pour publier un commentaire.
Juste étendre DefaultTableModel et puis vous avez accès à l'ensemble de ses méthodes. DefaultTableModel aussi extends AbstractTableModel, de sorte que les références à AbstractTableModel dans d'autres parties de votre code ne va pas casser.
OriginalL'auteur Eric Hydrick
par exemple
OriginalL'auteur mKorbel
Juste pour le fun, voici une version générique de @mKorbel de
TableColumnHider
.OriginalL'auteur trashgod
Sûrement DefaultTableModel est plus pratique, mais AbstractTableModel offre plus de flexibilité et moins de frais généraux. Il y a un exemple ici qui montre un modèle contenant une
List<Value>
, oùValue
est un POJO. D'autres exemples peuvent être trouvés ici.TableModel
interface.Voir aussi ce exemple à l'aide de
AbstractTableModel
.OriginalL'auteur trashgod
Attention, les exemples de code à partir de mKorbel et trashgod ne pas conserver l'original de l'ordre des colonnes. Juste essayer de cacher toutes les colonnes dans l'ordre, puis en leur montrant dans le même ordre nouveau (Nom->Taille->Type>Date de modification->les Autorisations), et vous verrez que la commande d'origine est perdue.
Si vous avez besoin de conserver l'original de l'ordre des colonnes lorsque leur montrant encore une fois, regardez Stephen de Kelvin solution.
Malheureusement, la confusion entre "voir" et de "modèle" est très répandue dans
JTable
API. Même les noms des méthodes sont trompeuses. Pour certaines lumières, voir une discussion ici.Je parlais de la difficulté à distinguer entre le modèle et le point de vue concernant la
JTable
et classes agrégées, par exemple:table.getColumnModel().getColumnCount(); // "2"
contretable.getModel().getColumnCount(); // "3"
, comme démontré ici.OriginalL'auteur msugar
J'ai adapté DefaultTableModel de la méthode addColumn à une coutume AbstractTableModel comme suit. Supposons que la colonne des identifiants (en-têtes) et le modèle de données (localCache) sont ArrayLists - le modèle de données une liste de tableaux d'une liste de tableaux.
OriginalL'auteur Arvanem