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 :

Centrer les intitulés des en-têtes - JTable


Sujet :

Composants Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    26
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 26
    Par défaut Centrer les intitulés des en-têtes - JTable
    Bonjour à tous,

    J'essaye désespérement de centrer le titres des en-têtes de mes colonnes d'un JTable.
    J'ai essayé le code qu'il y a dans la FAQ:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    TableCellRenderer headerRenderer = table.getTableHeader().getDefaultRenderer());
    ((DefaultTableCellRenderer) headerRenderer).setHorizontalAlignment(DefaultTableCellRenderer.CENTER);
    J'ai également essayé de mettre de l'html dans mes titres, mais toujours rien.

    Mon application utilise le look&n&feel du système (peut-être le problème vient de là ?)

    J'ai donc essayé de récupérer l'UI, de mettre en centré avec une classe interne, puis de refixer l'UI, mais ça ne fonctionne pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    public Table (TableModel tableModel) {
    		super (tableModel);
    		this.getTableHeader ().setReorderingAllowed (false); // On ancre les colonnes (on interdit les utilisateurs de les bouger)
    		TableHeaderUI tableHeaderUI = this.getTableHeader ().getUI ();
    		this.getTableHeader ().setDefaultRenderer (new HeaderRenderer ());
    		this.getTableHeader ().setUI (tableHeaderUI);
    	}
     
    class HeaderRenderer extends DefaultTableCellRenderer {
    		public HeaderRenderer () {
    			setHorizontalAlignment (SwingConstants.CENTER);
    			setOpaque (true);
    			setBorder (UIManager.getBorder ("TableHeader.cellBorder"));
    		}
     
    		public void updateUI () {
    			super.updateUI ();
    			setBorder (UIManager.getBorder ("TableHeader.cellBorder"));
    		}
     
    	}
    Ce code me centre bien les titres, mais me perd le look&n&feel sur les en-têtes des colonnes : je me retrouve avec des en-têtes sans fond ni bordure.

    Avez vous une idée ?

    Merci d'avance,
    Elhina

  2. #2
    Membre Expert Avatar de rtg57
    Homme Profil pro
    Autodidacte
    Inscrit en
    Mars 2006
    Messages
    1 343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 343
    Par défaut
    Bonjour,

    j'ai été aussi confronté à ce problème:
    * Lorsque l'on choisit un Look And Feel, c'est lui qui prend la main concernant la mise en page des composants, et je n'ai rien pu faire pour le contrer.

    * Du coup, je laisse le Look And Feel de base, ce qui me permets de disposer mes composants comme je veux.

    Voici mon post sur le sujet: http://www.developpez.net/forums/d88...nement-textes/

    @ bientôt...

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    26
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 26
    Par défaut
    Hum, merci de ton lien.
    J'ai résolu le problème en permettant à l'utilisateur de choisir son thème (L&F). C'est pas très jolie, mais ça me permet de tester tous les L&F et surtout de trouver celui qui correspondrait le mieux pour mes futures applications.

    Et comme tu le dis, certains L&F ont les titres centrés, certains sont à gauche.

    Elhina

  4. #4
    Membre éclairé Avatar de DjGonk
    Profil pro
    Inscrit en
    Février 2007
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 88
    Par défaut
    Autrement tu peux repartir sur une classe héritant de JLabel et implémentant TableCellRenderer (comme tu as fait) et redéfinir toi même les couleurs de fonds et de bordure en surchargeant la méthode paintComponent(Graphics g).

  5. #5
    Membre Expert Avatar de rtg57
    Homme Profil pro
    Autodidacte
    Inscrit en
    Mars 2006
    Messages
    1 343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 343
    Par défaut
    Re-bonjour,

    personnellement j'ai adopté une solution "bricolage" qui me convient parfaitement: je crée moi-même une ligne de titres de colonnes en ajoutant au-dessus de la JTable, un JPanel contenant des JLabel. (Evidemment, je ne définis pas dans ce cas le Header de la JTable)
    Ainsi je donne la couleur, l'alignement, la font, la bordure... que je veux à ces étiquettes, mais aussi, je personnalise le conseil (setToolTips) de chacune d'elles.

    Finalement ce problème de Look And Feel m'a ouvert la porte vers une solution que je trouve plus intéressante...

    @ bientôt...

Discussions similaires

  1. Changer les noms des colonnes de JTable
    Par lamis2009 dans le forum Composants
    Réponses: 1
    Dernier message: 16/06/2009, 17h19
  2. Les noms des colonnes du JTable ne s'affichent pas
    Par altaro dans le forum Composants
    Réponses: 1
    Dernier message: 15/05/2009, 10h08
  3. Requête SQL pour obtenir les intitulés des champs d'une table
    Par Zakapatul dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 01/12/2008, 10h51
  4. changer les intitulés des menus
    Par kineton dans le forum C++
    Réponses: 1
    Dernier message: 20/10/2007, 02h06
  5. INTO OUTFILE avec les intitulés des champs
    Par YPFine dans le forum Requêtes
    Réponses: 1
    Dernier message: 27/07/2007, 18h46

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