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 :

[Swing]Case a cocher JTable, et Renderer


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 124
    Par défaut [Swing]Case a cocher JTable, et Renderer
    Salut,

    J'ai un JTable avec un defautltablemodel, sur le deux premières colonnes j'ai des cases a cocher, sur les autres j'applique un renderer implementant un TableCellRenderer etendant de JLabel, le pb comment appliquer un fond au clique sur les colonnes des cases a cocher

    Merci

    Ps : j'ai essayé d'entendre de JCheckbox mais ca n'a pas marché







    [Modéré par Didier]
    Ajout de tag dans le titre
    Lire les règles du forum : Règles du forum Java

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 124
    Par défaut
    personne n'a d'idées ???
    en cette période de fêtes nous avons tous du mal a trouver des solutions, alors qu'on devraient être en vacances.



  3. #3
    Membre confirmé Avatar de spoutyoyo
    Inscrit en
    Avril 2004
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 116
    Par défaut
    Ben tu peux tester dans la méthode getTableCellRendererComponent de ton renderer si la jcheckbox fait partie de la ligne sélectionnée, et dés lors tu peux dire à ton composant de prendre la couleur de selection.

  4. #4
    raj
    raj est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 112
    Par défaut
    Je n'ai pas compris ta question .

    Est-ce que tu veux que la case à cocher fonctionne (
    change d'apparence sur un clic ) ou
    est-ce que tu veux changer la couleur de fond de la
    cellule ?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 124
    Par défaut
    quand je selectionne la ligne de mon tableau je veux attribuer une couleur de fond bien precise,

    j'ai une charte graphique a respecter, avec un code couleur donc je doit mettre un fond a la selection d'une couleur bien precise

    Merci

    ps : bien entendu ceci ne doit pas interferer dans le fonctionnement de ma case a cocher

  6. #6
    Membre confirmé Avatar de spoutyoyo
    Inscrit en
    Avril 2004
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 116
    Par défaut
    As tu essayé ce que je t'ai dit?

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 124
    Par défaut
    comment faire je ne comprend pas car, mon TableCellRenderer etendant de JLabel

    as tu un exemples ou qqchose pour me mettre sur la voie

    Merci

  8. #8
    Membre confirmé Avatar de spoutyoyo
    Inscrit en
    Avril 2004
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 116
    Par défaut
    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
     
    public class A extends JCheckBox implements TableCellRenderer{
     
        /** Creates a new instance of DemarcheRenderer */
        public A() {
            super();
            setOpaque(true);
        }
     
        public java.awt.Component getTableCellRendererComponent(javax.swing.JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
            try{            
                // comportement par defaut lorsque selection de la ligne de la table
                if (isSelected) {
                    this.setBackground(table.getSelectionBackground());
                    this.setForeground(table.getSelectionForeground());
                } else {
                    setForeground(table.getForeground());
                    setBackground(table.getBackground());
                }
            } catch (ClassCastException ex){
                // Rien a faire
            }
            return this;
        }
     
    }

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 124
    Par défaut
    j'avais deja testé cette solution elle fait merdé la case a cocher
    car le isSelected est prit sur la case a cocher, alors que moi je veux travailler sur la ligne selectionnée

    Merci

  10. #10
    Membre confirmé Avatar de spoutyoyo
    Inscrit en
    Avril 2004
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 116
    Par défaut
    Non non, le isSelected ne ferras référence qu'au isSelected du paramètre de la méthode (régle de portée des variables en JAVA).

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 124
    Par défaut
    ben moi je fait le test et en tous cas ca marche pas, veux tu bien faire le test pour verifier

    merci

  12. #12
    Membre confirmé Avatar de spoutyoyo
    Inscrit en
    Avril 2004
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 116
    Par défaut
    Je viens de la faire. J'ai bien la ligne de ma table (avec la jchecbox) qui prends la couleur de sélection lorsque je clic dessus, et ma jcheckbox qui ne se coche pas.
    Maintenant faut voir comment tu veux que ta JCheckBox fonctionne aussi? a quel moment tu dois la sélectionner?
    Moi j'ai implémenté le renderer, que j'ai instancié au niveau de ma JTable comme cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maJTable.setDefaultRenderer(String.class, new A());
    (le String.class c un exemple)

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 124
    Par défaut
    j'ai un tableau, dessus j'ai une classe qui etend de DefaultTableModel, dans les deux premieres colonnes j'ai des cases a cocher grace a l'option "true/false", la selection s'effectue automatiquement car DefaultTableModel gere les cases a cocher, sur les autres colonnes j'applique le renderer dont j'ai besoin qui etend je JLabel et implemente TableCellRenderer

    voici la methode qui dessine mon 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
    20
    21
     
    void DessineTableau(){
    		TableColumn column = null ;
    		for (int i = 0; i < 5; i++) {
    			column = _clsw_jTblFiles.getColumnModel().getColumn(i);
    			column.setHeaderRenderer(new _cl_HeaderRenderer());
     
    //			if(i==0 || i==1)
    //				column.setCellRenderer(new A()) ;
    			if(i==2)
    				column.setCellRenderer(new _cl_TextRenderer(_clsz_Lang)) ;
    			if(i == 3 || i == 4)	
    				column.setCellRenderer(new _cl_DateRenderer());			
    		}
     
    		_clsw_jTblFiles.getColumn("B").setPreferredWidth(5) ;
    		_clsw_jTblFiles.getColumn("A").setPreferredWidth(5) ;
    		_clsw_jTblFiles.getColumn(_cl_VAR.TAB_NOM).setPreferredWidth(200) ;
    		_clsw_jTblFiles.getColumn(_cl_VAR.TAB_TAILLE).setPreferredWidth(50) ;
     
    		repaint() ;

  14. #14
    Membre confirmé Avatar de spoutyoyo
    Inscrit en
    Avril 2004
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 116
    Par défaut
    Le code que tu me montres est bon à voir, je ne vois pas de où ton problème peut venir...surtout que de mon côté ça marche. Tu n'as pas oublié de mettre setOpaque(true) dans le renderer?
    Qu'est ce qui se passe graphiquement de ton côté exactement?

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 124
    Par défaut
    la case ne se coche plus, mais le fond se colore correctement, de plus il faut prendre en compte que j'ai 2 colonne de case a cocher, et tu sures que tes case a cocher fonctionne ?

    Merci

  16. #16
    Membre confirmé Avatar de spoutyoyo
    Inscrit en
    Avril 2004
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 116
    Par défaut
    Le problème de la coloration des JCheckBox est donc résolu.
    Pour la sélection des JCheckBox, il n'y pas d''interférence entre la dite sélection qui vient du model (getValueAt) et la sélection de la ligne de la table.
    N'as tu pas oublié dans ton renderer de tes cases à cocher de rajouter le code our dire à ta JCheckBox de se cocher style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.setSelected(((Boolean)value).booleanValue);
    faut garder en mémoire que ton model ne te donne que la valeur correspondant à une cellule, et que ton renderer lui dessine la cellule selon la valeur renvoyée par ton model (getValueAt).

    Montre moi ton code de ta méthode getValueAt et ton renderer si t'es toujours bloqué.

  17. #17
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 124
    Par défaut
    bravo probleme résolu,

    je te remercie vraiment de ton aide

    a+a+a+a

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

Discussions similaires

  1. JTable, editor renderer différents pour chaque case
    Par caitline1402 dans le forum Composants
    Réponses: 1
    Dernier message: 29/05/2010, 17h02
  2. [Swing] Utilisation de cases à cocher
    Par gids01 dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 25/04/2006, 15h21
  3. Réponses: 3
    Dernier message: 10/05/2005, 15h20
  4. [JTable] cell renderer
    Par biozaxx dans le forum Composants
    Réponses: 2
    Dernier message: 21/04/2005, 10h04
  5. [Swing]remplissage d'un JTable avec les vecteur
    Par 3adoula dans le forum Composants
    Réponses: 7
    Dernier message: 15/06/2004, 16h09

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