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

AWT/Swing Java Discussion :

[CellRenderer] Le contenu des cellules attendu ne s'affiche pas


Sujet :

AWT/Swing Java

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2003
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 38
    Points : 22
    Points
    22
    Par défaut [CellRenderer] Le contenu des cellules attendu ne s'affiche pas
    Amis codeurs, bonjour,

    je rencontre actuellement un problème avec le remplissage d'un tableau personnalisé qui dérive du'une jtable.
    J'utilise un cellrenderer pour afficher dans chaque cellule un jpanel contenant deux jlabels (un pour du texte et un pour une image) et m'on problème est que les contenus ne s'affichent tout simplement pas. A la place, je peux lire dans les cellules des "choses" du type : [-nom de l'objet dans le lequel dans lequel sont stockées les données à affichées-@a352a... par exemple].

    En espérant que vous pourrez m'aiguiller, voici mon code :
    code de déclaration de ma table :
    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
     
    Vector names = new Vector();
    					Vector rowVector = new Vector();
    					HeaderColumnGroup hcg = new HeaderColumnGroup(3);
    					names.add(hcg);
    					ColumnGroup cg = new ColumnGroup(3, names);
    					table = new MyTable(rowVector, cg);
    					table.getTableHeader().setReorderingAllowed(false);
    					table.setDefaultRenderer(Pictogram.class,
    							new MyRenderer());
    					table.setShowHorizontalLines(false);
    					table.setShowVerticalLines(false);
    					table.setIntercellSpacing(new Dimension(10, 10));
    					table.setRowHeight(INITIAL_ROWHEIGHT);
    					// table.setBackground(new Color(255,255,255));
    					scrollPane.setViewportView(table);
    					table.addMouseListener(new MouseAdapter() {
    						public void mousePressed(MouseEvent e) {
    							Point p = e.getPoint();
    							int row = table.rowAtPoint(p);
    							int column = table.convertColumnIndexToModel(table
    									.columnAtPoint(p));
    							// System.out.println(table.getValueAt(row,column).toString());
    						}
    					});
    code de remplissage du tableau :
    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
     
    ArrayList alPictosTh = getPictogramsForTheme(th);
    			if (null != alPictosTh) {
    				/*
    				 * while (table.getModel().getRowCount() > 0) {
    				 * table.deleteRow(0); }
    				 */
    				Vector rowsVector = new Vector();
    				Vector currentRow;
    				for (int i = 0; i < alPictosTh.size(); i++) {
    					currentRow = new Vector();
    					for (int j = 0; j < 3; j++) {
    						currentRow.add(alPictosTh.get(i));
    					}
    					rowsVector.add(currentRow);
    				}
    				table.addRow(rowsVector);
     
    			}
    ma classe dérivant de jpanel dans laquelle il y aura les 2 jlabels :
    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
     
    public class JPanPicto extends JPanel {
     
    	private JLabel labelPicto = new JLabel();
     
    	private JLabel imgPicto = new JLabel();
     
    	public JPanPicto() {
    		super(new BorderLayout());
    		this.setVisible(true);
     
    	}
     
    	public JPanPicto(Pictogram pic){
    		this();
    		setLabelPicto(pic.getLabelPictogram());
    		setImgPicto(pic.getImagePictogram());
    		this.add(this.labelPicto, BorderLayout.SOUTH);
    		this.add(this.imgPicto,BorderLayout.CENTER);
    	}
     
    	public JPanPicto(String labelPicto,ImageIcon imgPicto) {
    		this();
    		setLabelPicto(labelPicto);
    		setImgPicto(imgPicto);
    		this.add(this.labelPicto, BorderLayout.SOUTH);
    		this.add(this.imgPicto,BorderLayout.CENTER);
    	}
     
    	public JLabel getImgPicto() {
    		return imgPicto;
    	}
     
    	public void setImgPicto(ImageIcon imgPicto) {
    		this.imgPicto.setIcon(imgPicto);
    	}
     
    	public JLabel getLabelPicto() {
    		return labelPicto;
    	}
     
    	public void setLabelPicto(String labelPicto) {
    		this.labelPicto.setText(labelPicto);
    	}
     
     
     
    }
    n'hésitez pas à me demander des précisions s'il y a besoin.

    Je ne m'en sors pas après après retourné le code dans tous les sens.
    Merci d'avance et bonne journée à tous !

  2. #2
    Membre confirmé Avatar de NeptuS
    Profil pro
    Inscrit en
    Août 2005
    Messages
    392
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2005
    Messages : 392
    Points : 508
    Points
    508
    Par défaut
    j'ai pas lu le code, mais à vue de nez on dirait 1 toString dans la cellule : il te retourne le type et l'adresse de l'objet que tu veux ajouter ....
    de là à trouver une solution ...
    va faire un tour sur la FAQ, et fait une recherche sur le forum : il y a de très bons exemples d'utilisation des JTables.

  3. #3
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Points : 722
    Points
    722
    Par défaut
    Par défaut les CellRenderer utilise la méthode toString() appliquée à l'objet contenu dans la cellule afin d'afficher ces objets.
    Si tu veux obtenir un comprtement différent, il faut que tu crées ton propre renderer...

    Voir le How To Use Tables

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

Discussions similaires

  1. [Notepad++ xdebug] Contenu des variables qui ne s'affiche pas
    Par fepano124 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 25/09/2013, 21h53
  2. [FPDF] Comment centrer le contenu des cellules d'un tableau généré avec FPDF ?
    Par hacksi dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 07/02/2008, 15h38
  3. Remplacer le contenu des cellules de destination
    Par cyraile dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 15/11/2006, 08h23
  4. [VBA]comptage de lignes en fonction du contenu des cellules
    Par calimero91 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 22/12/2005, 11h38
  5. [JTable]Aligner le contenu des cellules
    Par )3lade dans le forum Composants
    Réponses: 2
    Dernier message: 09/03/2004, 13h24

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