Comment insérer/supprimer une colonne à JTable java
Je n'ai aucune idées de quoi faire. Je suis entrain de créer une application. J'ai besoin de travailler avec la table, donc je suis en utilisant la JTable. Mais j'ai beaucoup de problèmes avec elle.
Il semble que cela fonctionne, mais lorsque je tente de supprimer la colonne de cette colonne disparaît (uniquement dans le GUI), mais toutes les informations existe toujours. Aussi columncount ne change pas.
J'ai cherché et essayé beaucoup de code, mais rien n'a changé.
public void addTblCol(JTable table,String name) {
DefaultTableModel model = (DefaultTableModel)table.getModel();
TableColumn col = new TableColumn(model.getColumnCount());
col.setHeaderValue(name);
table.addColumn(col);
model.addColumn(name);
this.realColCnt++;
};
public void delTblCol(JTable table,int index) {
DefaultTableModel model = (DefaultTableModel)table.getModel();
TableColumn col = table.getColumnModel().getColumn(index);
table.removeColumn(col);
table.revalidate();
this.realColCnt--;
};
Vous nous demandez de deviner ce qui est mal, sans code, sans plus de détails. Nous pouvons être en mesure de vous donner des conseils d'ordre général, mais pour des conseils plus précis, vous aurez envie de montrer et de nous en dire plus. Le mieux serait pour vous de créer et de poster un sscce.
Il aide à se rappeler qu'un JTable n'est pas une feuille de calcul, et ne se comporte pas comme une feuille de calcul.
Il aide à se rappeler qu'un JTable n'est pas une feuille de calcul, et ne se comporte pas comme une feuille de calcul.
OriginalL'auteur CROSP | 2013-11-03
Vous devez vous connecter pour publier un commentaire.
La
DefaultTableModel
prend en charge unsetColumnCount()
méthode qui va vous permettre de supprimer des colonnes à partir de la fin du modèle uniquement.Si vous souhaitez supprimer des colonnes à partir du milieu du modèle, alors vous aurez besoin de:
DefaultTableModel
et de créer votre propreremoveColumn(int column)
méthode.Vector.remove(int)
méthode pour supprimer la colonne de jamais ligne.fireTableStructureChanged()
méthode pour dire à la table que d'une colonne a été supprimée de la table peut être repeint.Ou vous pourriez essayer d'écrire le code vous-même. Il serait probablement 3-5 lignes de code. Vous avez besoin d'une boucle. L'intérieur de la boucle une déclaration à supprimer l'élément du Vecteur. En dehors de la boucle, une autre ligne de code pour appeler le fireXXX méthode. Si vous faites un effort et après votre SSCCE la montre que vous avez essayé alors nous pouvons offrir plus d'aide, mais nous ne sommes pas ici pour écrire le code pour vous.
OriginalL'auteur camickr
Quelques informations générales concernant votre question.
La JTable API pour
public void removeColumn(TableColumn aColumn)
déclare explicitement:Donc le problème que vous rencontrez est à prévoir. Si vous essayez de supprimer les données du modèle, alors vous allez avoir à changer votre TableModel données et ColumnModel. À nouveau pour plus d'aide spécifiques, vous aurez besoin de nous en dire plus.
Envisager de créer un tableau personnalisé de modèle et de lui donner une
removeColumn(...)
méthode qui supprime toutes les données à partir d'une seule colonne, puis les appels appropriésfireXXX(...)
méthode.Modifier
Vous dites dans un commentaire:
Que tout dépend de ce que vous voulez faire. Si vous voulez juste changer l'affichage, puis retirer de la colonne que vous êtes en train de faire et de laisser les données.
voir Modifier pour répondre s'il vous plaît.
J'ai besoin de supprimer toutes les données de la colonne ou tout simplement remplacer la colonne à colonne suivante . Peut-être plus facile de remplacer la colonne avec l'indice désiré ?
OriginalL'auteur Hovercraft Full Of Eels
Basé sur camickr de la solution, j'ai écrit ce code à
remove
une colonne de laJTable
.Remarque qu'il ne vérifie pas si la colonne peut ou ne peut pas être supprimé.
OriginalL'auteur D. Kastier
OriginalL'auteur Vivekanand Rajbhar