JTable masquer et afficher des colonnes
Je veux ajouter des colonnes à une table (Swing JTable). Certains d'entre eux ont une taille par défaut (par exemple, 250), d'autres seront cachés (de sorte que leur taille sera de 0). J'utilise ce code:
model = new DefaultTableModel();
table = new JTable(model);
setAutoResizeMode(AUTO_RESIZE_OFF);
for (int i = 1; i < COLUMN_NAMES.length; i++) {
model.addColumn(COLUMN_NAMES[i]);
if (show[i]) show(index);
else hide(index);
}
........
private void hide(int index) {
TableColumn column = getColumnModel().getColumn(index);
column.setMinWidth(0);
column.setMaxWidth(0);
column.setWidth(0);
column.setPreferredWidth(0);
doLayout();
}
private void show(int index) {
final int width = 250;
column.setMinWidth(15);
column.setMaxWidth(width);
column.setWidth(width);
column.setPreferredWidth(width);
doLayout();
}
le problème, c'est quand le tableau est affiché, toutes les colonnes sont montré (aucun n'est caché) et leur taille n'est pas 250 mais ils ont tous la même taille.
Comment puis-je obtenir l'effet recherché?
Veuillez consulter le Swing-génie StanislavL de réponse ici: hide-column-in-jtable-temporary
lien sympa 🙂 +1
lien sympa 🙂 +1
OriginalL'auteur Randomize | 2011-12-03
Vous devez vous connecter pour publier un commentaire.
JTable#removeColumn supprimer la Colonne seulement à partir de JTable vue, plus de dans cette exemple
OriginalL'auteur
Je pense que vous avez nommé vos méthodes de manière incorrecte, lorsque vous souhaitez masquer une colonne, vous allez définir
mais dans votre code vous le faites lorsque vous souhaitez afficher une colonne qui est exactement à l'opposé.
Aussi il n'est pas nécessaire d'appeler cette "setWidth" la méthode sur une TableColumn, lire TableColumn#setWidth(int).
OriginalL'auteur
au lieu de ré-inventer la roue, vous pouvez envisager d'utiliser JXTable (en le SwingX projet) qui prend en charge les colonnes masquées, comlete avec une interface de contrôle pour permettre aux utilisateurs de cacher/montrer la dynamique entre les deux - et un tas d'autres bidules :).
OriginalL'auteur
essayer ce quelque chose comme ceci par exemple:
C'est le meilleur moyen que je connaisse pour masquer une colonne.
Le plus probable de la downvotes ont été en raison de la réponse étant de 3 ans de retard. Qui peut être bien, mais pas quand la réponse n'est qu'une élaboration de l'3 ans, a accepté de répondre.
OriginalL'auteur
OriginalL'auteur