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 :

En tête du JTable


Sujet :

Composants Java

  1. #1
    Membre confirmé Avatar de yashiro
    Inscrit en
    Mars 2004
    Messages
    214
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 214
    Par défaut En tête du JTable
    Salut, j'aimerais changer l'en-tete de mon JTable, je suis donc allé faire un tour dans la JAVAdoc et j'ai aperçu
    qui prend en paramètre un alors je suppose que je doit créer un "JTableHeader ", mais le plus mal c'est que je sais pas comment du fait que celui-ci possède un nombre de méthode aussi énorme qu'incompréhensible (enfin pour la majorité). Si quelqu'un l'a déja fait, plizzzzzzzzzzz help!!!!!!!!!

  2. #2
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Le contenu des entêtes de la JTable se définissent au niveau du modèle de la JTable. (notion de columnIdentifiers par exemple dans le DefaultTableModel)

    http://java.sun.com/javase/6/docs/ap...ableModel.html
    ++

  3. #3
    Membre confirmé Avatar de yashiro
    Inscrit en
    Mars 2004
    Messages
    214
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 214
    Par défaut
    Salut sinok et merci pour ton intervention.
    j'ai déja crée un modèle en implémentant le DataModel, mais ce qui m'intéresse ici est de pouvoir changer plutot le rendu de l'en-tête du JTable. j'ai réussi à changer le rendu des cellules avec le TableCellRenderer meis je voudrais aussi changer celui de l'en tête genre s'il ya une sorte de HeaderRenderer ou quelque chose comme ça et si oui, faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    JTable tab = new JTable(model);
    tab.setDefaultCellRenderer(monrendu); 
    tab.setHeaderRenderer(monHeaderRenderer);
    Est-ce possible???

  4. #4
    Membre éclairé Avatar de HebusBreizh
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 85
    Par défaut
    Je dirais oui.
    Après si tu vas utiliser cette table plusieurs fois le mieux c'est de créer une nouvelle classe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    YashiroTable extends JTable
    dans laquelle on trouvera la méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    protected JTableHeader createDefaultTableHeader()
    surchargée pour afficher le header de ta composition.

  5. #5
    Membre confirmé Avatar de yashiro
    Inscrit en
    Mars 2004
    Messages
    214
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 214
    Par défaut
    donc cela veut dire que dans la méthode: createDefautlTableHeader(), je peux tout simplement renvoyer un JPanel que j'ai construit, genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     public JTableHeader createDefautlTableHeader() {
     return new JPanel();
    }
    ce code peut-il marcher????

  6. #6
    Membre éprouvé Avatar de Lady
    Femme Profil pro
    Développeur Java
    Inscrit en
    Mars 2003
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2003
    Messages : 678
    Par défaut
    TableCellRenderer marche aussi pour le header!

    Un exemple ici c'etait pour avoir du texte en couleur :

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    public class ResultTableHeaderRenderer extends JLabel implements TableCellRenderer{
     
    	boolean  _selected = false;/* true if there is a filter on this column, false else*/
    	String _columnName;/* the title of the column*/
    	private static final long serialVersionUID = 24L;
     
    	/**
             * Constructor 
             * @param columnName the title of the column
             */
    	ResultTableHeaderRenderer(String columnName){
    		super();
    		_columnName = columnName;
    	}
     
    	/**
             * modify the selection 
             * @param select true to indicate that there is a filter in this column, false else
             */
    	public void setSelected(boolean select){
    		_selected = select;
    	}
     
    	/**
             * render, write in red the title if the column is selected, else it's in black
             */
    	public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
    		if (_selected)
    			this.setText("<html><font color=red>"+_columnName+"<font></html>");
    		else
    			this.setText(_columnName);
    		return this;
    	}
     
    }
    et pour mettre le renderer au header :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    for (int i=0; i< _table.getColumnCount()-1; i++) 
    		{
    			_table.getColumnModel().getColumn(i).setHeaderRenderer(new ResultTableHeaderRenderer(_table.getColumnName(i)));
    		}

  7. #7
    Membre confirmé Avatar de yashiro
    Inscrit en
    Mars 2004
    Messages
    214
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 214
    Par défaut
    Ok je cour essayer ce truc merci.

Discussions similaires

  1. Fractionner/Fusionner cellule d' en-tête JTable
    Par ddb_am dans le forum Composants
    Réponses: 1
    Dernier message: 21/03/2014, 23h20
  2. Réponses: 2
    Dernier message: 31/01/2014, 22h38
  3. Centrer les intitulés des en-têtes - JTable
    Par elhina dans le forum Composants
    Réponses: 4
    Dernier message: 30/12/2010, 09h09
  4. [Impression] JTable avec en-tête et pied de page
    Par CheryBen dans le forum Composants
    Réponses: 4
    Dernier message: 28/09/2005, 09h03
  5. Réponses: 9
    Dernier message: 12/08/2002, 07h38

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