IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants Java Discussion :

agrandir la seule colonne d'une jTable


Sujet :

Composants Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Février 2006
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 43
    Points : 34
    Points
    34
    Par défaut agrandir la seule colonne d'une jTable
    Bonjour, je souhaiterais savoir comment peut on faire pour agrandir une colonne d'une jTable avec la souris?
    Le problème est que je n'ai qu'une colonne pour ma jTable.
    donc taille colonne == taille de la jTable.
    La colonne ne veut pas se redimensionner vu qu'elle doit être égale à la taille de la jTable

    Merci pour vos propositions

  2. #2
    Membre habitué Avatar de minus
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    153
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 153
    Points : 177
    Points
    177
    Par défaut
    En fait ce matin j'ai eu le meme probleme et j'ai resolu ca de facon un peu barbare.
    Je vais essayer de t'expliquer...


    Tout d'abord tu dois mettre l'autoresize à off et ton JScrollPane doit avoir son scroll horizontal.

    En principe si tu laisses cela en l'état, tu va avoir une colonne qui ne prend pas toute la largeur, l'astuce commence la...
    Mon idée est de changer la taille minimum de ta colonne est de lui donner la largeur de ta table avec la methode setMinWidth().

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maTable.getColumnModel().getColumn(0).setMinWidth(maTable.getWidth());
    Bon j'avoue que je suis passé a autre chose et que je n'ai pas testé sur une seule colonne, mais a mon avis ca marche (ca marche pour 2 colonnes).



    PS : si ya une meilleur methode n'hesitez pas

  3. #3
    Membre confirmé
    Avatar de DBProg
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2006
    Messages : 242
    Points : 579
    Points
    579
    Par défaut
    Bonjour !

    Sûrement une solution beaucoup plus propre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    table.setAutoReziseMode(JTable.AUTO_RESIZE_LAST_COLUMN);
    http://java.sun.com/j2se/1.5.0/docs/...esizeMode(int)

  4. #4
    Membre habitué Avatar de minus
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    153
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 153
    Points : 177
    Points
    177
    Par défaut
    Oui en fait ca ne marche pas ma methode
    La derniere colonne reste non modifiable vers la droite (si j'ai bien compris le probleme )

  5. #5
    Nouveau membre du Club
    Inscrit en
    Février 2006
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 43
    Points : 34
    Points
    34
    Par défaut
    Merci pour vos réponse.

    Ca ne marche toujours pas. j'aavais déjà essayé la solution de dbProg.

    Je ne suis pas sûr que ca puisse se faire autoematiquement.

    Il faut sans doute tricher, genre agrandir la JTable lorsqu'on veut agrandir la colonne. Pour ca, faudra mettre un listener lorsqu'on veut agrandir la colonne et modifier la table en faisant un calcul :
    largeur = poisiton de début + e.getPoint.x.

    Je pense que c'est ce que je vais tenter de faire même si je n'aime pas du tout cette facon de faire.

    Qu'en pensez-vous?

  6. #6
    Nouveau membre du Club
    Inscrit en
    Février 2006
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 43
    Points : 34
    Points
    34
    Par défaut
    La méthode setAutoResizeMode(AUTO_RESIZE_OFF);
    Cette méthode permet de modifier la taille de ma fenêtre.
    J'ai oublié de donner un détail tres important.
    C'est que j'ai deux tables coller une à côté de l'autre.
    La première avec un JTree et la deuxième des données.
    La deuxième table ne se déplace pas si j'agrandis la seule colonne de ma première table donc je vois qu'une partie de ma colonne.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 65
    Points : 20
    Points
    20
    Par défaut
    Je suis débutant mais voila une petite idée, enfin je sais pas si c'est ce que tu cherche mais bon on peux tjrs essayer:

    Voila pour ton JTable tu le crée avec un "DefaultTableModel"
    Dans ses propriéte tu lui dit que tu n'a qu'une colone
    Et tu donne directement a ta colone la taille que tu veux.

    Si ça correspond et que c'est ce que tu recherche no problem je l'ai codé ya pas longtemps alors si tu veux plus d'info....

    pour un foi c'est moi qui aide....

  8. #8
    Nouveau membre du Club
    Inscrit en
    Février 2006
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 43
    Points : 34
    Points
    34
    Par défaut
    Salut,

    je donne déjà une taille à ma colonne au départ mais l'utilisateur peut changer la taille de cette colonne s'il le désire.
    Je sais changer la taille de ma colonne ( " setAutoResizeMode(AUTO_RESIZE_OFF); ")
    Ce que je souhaiterais, c'est que ma JTable qui est collée à celle-ci se décale vers la droite.

  9. #9
    Nouveau membre du Club
    Inscrit en
    Février 2006
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 43
    Points : 34
    Points
    34
    Par défaut
    Voilà, j'ai une solution à mon problème.

    Dans ma classe qui extend Ma JTable de gauche qui ne contient qu'une seule colonne. j'implémente en plus TableColumnModelListener.

    j'override (désolé pour le verbe, je ne me rapelle plus de la traduction) la méthode columnMarginChanged. Dans celle-ci je change la largeur du viewport, la taille devient en fait la taille de la colonne

    Voilà ce que j'ai ajouté dans mon code

    public class JTreeTable extends JTable implements TableColumnModelListener{
    ...

    @Override
    public void columnMarginChanged(ChangeEvent e) {
    DefaultTableColumnModel columnModel = (DefaultTableColumnModel) e.getSource();
    if(getViewport() != null){
    getViewport().setPreferredSize(new Dimension(columnModel.getTotalColumnWidth(),getViewport().getHeight()));
    }
    super.columnMarginChanged(e);
    }

    public JViewport getViewport(){
    return (JViewport)SwingUtilities.getAncestorOfClass(JViewport.class, this);//this = ma JTable
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 20/06/2007, 22h18
  2. des combos differentes dans une meme colonne d'une Jtable
    Par mickael.guilbert dans le forum Composants
    Réponses: 2
    Dernier message: 13/05/2006, 11h31
  3. Fixer les titres de colonnes d'une JTable?
    Par bygui dans le forum Composants
    Réponses: 5
    Dernier message: 13/04/2006, 13h54
  4. Redimmentionner automatiquement une seul colone d'une JTable
    Par SuperPat dans le forum Composants
    Réponses: 4
    Dernier message: 04/04/2006, 11h52
  5. [JTable]Selectionner une seule ligne d'une jTable ?
    Par Maximus32 dans le forum Composants
    Réponses: 2
    Dernier message: 22/10/2004, 02h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo