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 :

Renderer dans JTable


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Février 2011
    Messages : 12
    Par défaut Renderer dans JTable
    Bonjour,

    Je post rarement mais là je bloque depuis un moment et ça m'exaspère.

    Je dois modifier l'affichage des cellules d'une colonne. J'utilise donc un DefaultTableCellRenderer.

    Le problème, tout simple, absolument rien ne se passe...
    Voilà le code :
    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
     
    setDefaultRenderer( String.class, new DefaultTableCellRenderer(){
     
    	@Override
    	public Component getTableCellRendererComponent ( JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column )
    	{
     
    		Component compo = getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
     
    		AbstractTable.IColonne col = getColonneAt(column);
    		Data lignePb = getRowAt(row);
     
    		JLabel label = new JLabel();
    		label.setOpaque(true);
    		label.setBackground(compo.getBackground());
     
     
    		label.setText( "text" );
     
    		return label;
    	}
    });
    Ca ne fonctionne pas non plus avec Object.class au lieu de String.class.
    Quelque chose doit m’échapper dans le fonctionnement, mais quoi ?

    Merci

  2. #2
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Par défaut
    Tu as oublié un "super." à la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Component compo = getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
    Parce que là tu as un appel récursif qui ne s'arrête jamais.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Component compo = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag :resolu:

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  3. #3
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Par défaut
    Il faut également vérifier la classe affectée à la colonne (lien)
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  4. #4
    Membre averti
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Février 2011
    Messages : 12
    Par défaut
    Merci à vous deux pour vos réponses.

    Cependant, cela ne change rien, aucun traitement n'est appliqué à ma Table...

    Ma colonne est bien typé String...

  5. #5
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Par défaut
    Je t'invite donc à nous poster un bon ECM (voir ma signature )
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  6. #6
    Membre averti
    Inscrit en
    Juillet 2011
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juillet 2011
    Messages : 17
    Par défaut
    essayez avec une seule colonne :
    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
     
    table.getColumnModel().getColumn(0).setCellRenderer( new DefaultTableCellRenderer(){
     
    	@Override
    	public Component getTableCellRendererComponent ( JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column )
    	{
     
    		Component compo = getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
     
    		AbstractTable.IColonne col = getColonneAt(column);
    		Data lignePb = getRowAt(row);
     
    		JLabel label = new JLabel();
    		label.setOpaque(true);
    		label.setBackground(compo.getBackground());
     
     
    		label.setText( "text" );
     
    		return label;
    	}
    });
    si ça n'a pas marcher peut être que vous n'avez pas utiliser un AbstractTableModel ou indiquer qu'il s'agit de colonnes typés String :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public Class getColumnClass(int columnIndex){
     
                return String.class;
    	}

  7. #7
    Membre éclairé
    Homme Profil pro
    Première S
    Inscrit en
    Juillet 2010
    Messages
    266
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France

    Informations professionnelles :
    Activité : Première S

    Informations forums :
    Inscription : Juillet 2010
    Messages : 266
    Par défaut
    Salut,
    je ne suis pas un expert, mais j'ai une bonne expérience en matière de JTable.
    Bon, je vois tout de suite une chose ... c'est qu'il n'y a pas de constructeur.
    Peut-être qu'il y a moyen de faire sans, toujours est-il que ce code marche très bien chez moi :

    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
     
    // imports
     
    public class InfosCellRenderer extends DefaultTableCellRenderer {
    	ImageIcon icon;
    	public InfosCellRenderer(){
    		super();
    		this.setText("");
    		icon = new ImageIcon("Organizator_Ressources/medias/images/prog/screenActivity/infos.png");
    		this.setIcon(icon);
    	}
    	@Override
    	public Component getTableCellRendererComponent(JTable table, Object value,	boolean isSelected, boolean hasFocus, int row, int column) {
    		this.setToolTipText(value.toString());
    		 return this;
    	}
    }
    le JLabel est initialisé dans le constructeur, et je fais un setIcon dans le constructeur aussi, pour pas le faire à chaque demande

    Donc essaye avec une constructeur, ça devrait marcher ... perso, je n'ai jamais fait ce genre de CellRenderer "à la volée", c'est pour ça que je ne m'avance pas plus

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

Discussions similaires

  1. JSlider renderer dans une JTable
    Par Malawi dans le forum Graphisme
    Réponses: 2
    Dernier message: 04/12/2007, 18h37
  2. Réponses: 5
    Dernier message: 29/08/2007, 16h11
  3. [JTable][RadioButton]Afficher groupe de boutons dans JTable
    Par leminipouce dans le forum Composants
    Réponses: 11
    Dernier message: 21/02/2006, 17h04
  4. combobox dans jtable
    Par nicotine002 dans le forum Composants
    Réponses: 1
    Dernier message: 10/01/2006, 23h01
  5. Selection listener dans JTable
    Par calypso dans le forum Composants
    Réponses: 3
    Dernier message: 02/08/2004, 17h56

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