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 :

JTable décalage entre le Header et la colonne


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de arnaud.tlse
    Profil pro
    Étudiant
    Inscrit en
    Avril 2008
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2008
    Messages : 115
    Par défaut JTable décalage entre le Header et la colonne
    Bonjour à tous,

    j'ai fait des recherches sur les possibilités de fusion de cellules, et j'ai trouvé ce lien :
    MultiSpanCellTable

    J'ai alors regardé l'exemple du "Multi-Span Cell", dont le code est dispo en un seul fichier, ICI.

    J'ai alors inséré ce composant dans ma JFrame :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
        AttributiveCellTableModel ml = new AttributiveCellTableModel(liste,20);
        final CellSpan cellAtt =(CellSpan)ml.getCellAttribute();
        final MultiSpanCellTable table = new MultiSpanCellTable( ml );
     
        JScrollPane scroll = new JScrollPane( table );
     
        this.add(scroll);
    ("liste" est un Vector<String> pour les headers, et "20" c'est le nombre de lignes).

    Le résultat est un décalage entre le header de la colonne et son contenu.

    Une petite image jointe .

    J'espère vraiment que quelqu'un pourra m'aider, car ce n'as pas agréable du tout à lire.
    Arnaud.
    Images attachées Images attachées  

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    "20" serait plutôt le nombre de colonnes. Combien y-a-t-il de colonnes dans ton modèle ? Je pense que tu as au moins 21 colonnes dans ton modèle.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  3. #3
    Membre confirmé Avatar de arnaud.tlse
    Profil pro
    Étudiant
    Inscrit en
    Avril 2008
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2008
    Messages : 115
    Par défaut
    L'image que j'ai mise en pièce jointe est un exemple de décalage mais qui ne correspond pas au code que j'ai mis.

    Le Vector<String> liste contient en réalité 16 chaînes pour mon test, mais sa taille est variable, et le nombre "20" est bien le nombre de lignes. J'ai en pièce jointe l'image correspondant au code ce coup ci.

    En faisant un petit zoom je me suis aperçu que la taille de la colonne fait systématiquement 1px de plus que son header, et que les colonnes débutent 1px plus loin du bord de la fenêtre que les headers.
    D'où un décalage de plus en plus voyant.

    Comment empêcher cela ?
    Images attachées Images attachées  

  4. #4
    Membre éclairé Avatar de donnadieujulien
    Développeur informatique
    Inscrit en
    Avril 2008
    Messages
    433
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2008
    Messages : 433
    Par défaut O
    Ca viendrai pas de la largeur des colonnes et des header qui sont pas les mémes?

  5. #5
    Membre confirmé Avatar de arnaud.tlse
    Profil pro
    Étudiant
    Inscrit en
    Avril 2008
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2008
    Messages : 115
    Par défaut
    Si, comme je l'ai dit plus haut c'est bien ça le problème, les colonnes font toutes 1px de plus que leurs headers.
    De plus les colonnes démarrent 1px plus loin de la marge de gauche que les headers, d'où un décalage dès le départ qui s'accentue plus le nombre de colonnes augmente.

    Mais comment définir une taille de colonne différente de la taille de son header ?
    Ou inversement ?

  6. #6
    Membre éclairé Avatar de donnadieujulien
    Développeur informatique
    Inscrit en
    Avril 2008
    Messages
    433
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2008
    Messages : 433
    Par défaut OK
    TableModel model = getColumnModel();
    model.getColumn(i).setPreferredWidth(x);

    et les headers : table.getTableHeader().setPerferedSize....

    Mais c'est bizarre ton histoire, à mon avis ca vient du table model

  7. #7
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2002
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 18
    Par défaut Re
    Salut,

    tu vas dans la classe MultiSpanCellTable et tu remplaces dans la méthode getCellRect(int..,int..,boolean..)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cellFrame.width = aColumn.getWidth() + columnMargin
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cellFrame.width = aColumn.getWidth()

  8. #8
    Membre confirmé Avatar de arnaud.tlse
    Profil pro
    Étudiant
    Inscrit en
    Avril 2008
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2008
    Messages : 115
    Par défaut RESOLU
    Problème résolu, ça marche nickel merci beaucoup !

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

Discussions similaires

  1. Probleme JTable Header et largeur colonnes
    Par Seth77 dans le forum Composants
    Réponses: 6
    Dernier message: 16/01/2006, 10h36
  2. [JTable] Insertion d'images dans la première colonne
    Par cocolepelo dans le forum Composants
    Réponses: 2
    Dernier message: 29/11/2005, 15h17
  3. [JTable] Personnaliser l'apparence des entêtes de colonne
    Par seiryujay dans le forum Composants
    Réponses: 3
    Dernier message: 03/10/2005, 17h09
  4. [JTable] redimensionner et changer le titre des colonnes
    Par Ghost Dog dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 19/04/2005, 20h31
  5. Réponses: 2
    Dernier message: 25/05/2004, 11h40

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