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 :

JTable ==> Personnalisé une cellule


Sujet :

Composants Java

  1. #1
    Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 70
    Points : 52
    Points
    52
    Par défaut JTable ==> Personnalisé une cellule
    bonjour, j'essaye de personnalisé le Font et le Foreground d'une cellule pour la couleur ça marche mais la police ça marche pas voila le code que j'ai appliqué:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    TableColumn cC = jCreditInFine_table.getColumnModel().getColumn(0);
    DefaultTableCellRenderer edC=new DefaultTableCellRenderer();
    edC.setForeground(Color.BLUE);
    edC.setBackground(Color.YELLOW);
    // :!: 
    Font fonte = new Font("Book Antiqua", Font.BOLD ,20);
    edC.setFont(fonte) ;
    //  :!: 
    edC.setFocusable(false);	
    cC.setCellRenderer(edC);

  2. #2
    Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 70
    Points : 52
    Points
    52
    Par défaut
    un autre problème surgit c'est que le programme ne prend pas on compte le passage des paramétres ligne et colonne c.à.d qu'il met la colonne entière en jaune

    voila la classe editeurCell:

    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
    public class editeurCell extends DefaultTableCellRenderer
     {
        private static final long serialVersionUID = 1L;
     
     
        public Component getTableCellRendererComponent
    	        (JTable table, Object value, boolean selected, boolean focused, int row, int column)
    	    {
     
    	       setEnabled(table == null || table.isEnabled()); 	        // on crée une fonte
     
    	       setForeground(Color.BLUE);
    	       setBackground(Color.YELLOW);
    	Font fonte = new Font("Book Antiqua", Font.BOLD ,20);
    	        setFont(fonte) ;
    	        super.getTableCellRendererComponent(table, value, selected, focused, row, column);
     
    	        return this;
    	    }
    }
    voila le fragement du code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    TableColumn cC = jCreditInFine_table.getColumnModel().getColumn(0);
    editeurCell edC=new editeurCell();
    edC.getTableCellRendererComponent(jCreditInFine_table,null,false,false,1,1);
    cC.setCellRenderer(edC);



    AIDEZ MOI !!!!

  3. #3
    Membre chevronné
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Points : 2 197
    Points
    2 197
    Par défaut
    Salut, ça me parait normal, tu appliques tes propres paramètres au component et ensuite tu appelles la méthode super() donc ça écrase tes paramètres. Essait ça :
    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 class editeurCell extends DefaultTableCellRenderer 
     { 
        private static final long serialVersionUID = 1L; 
     
        public Component getTableCellRendererComponent 
               (JTable table, Object value, boolean selected, boolean focused, int row, int column) 
           { 
     
              setEnabled(table == null || table.isEnabled());            // on crée une fonte 
     
              Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
     
              c.setForeground(Color.BLUE); 
              c.setBackground(Color.YELLOW); 
              Font fonte = new Font("Book Antiqua", Font.BOLD ,20); 
              c.setFont(fonte) ; 
     
              return c; 
           } 
    }
    Et le renderer est appliqué à toute ta JTable car à aucun moment tu ne fais de test sur le numéro de colonnes ou ligne, ou selected. En fait tu veux appliquer ton renderer sur quelle partie de la JTable?

    Et je ne vois pas l'intérêt de cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    setEnabled(table == null || table.isEnabled());

  4. #4
    Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 70
    Points : 52
    Points
    52
    Par défaut
    salut, je vous remercie pour votre reponse
    pour le render je veux l'appliquer sur des cellules distinctes et oui j'ai prevue un test pour le numero colonne et de ligne

  5. #5
    Membre chevronné
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Points : 2 197
    Points
    2 197
    Par défaut
    Pour choisir les cellules à colorer, il y a juste à ajouter un petit test :
    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
     
    public Component getTableCellRendererComponent 
               (JTable table, Object value, boolean selected, boolean focused, int row, int column) 
           { 
     
              setEnabled(table == null || table.isEnabled());            // on crée une fonte 
     
              Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); 
     
              if(column == x && row == y){ 
                  c.setForeground(Color.BLUE); 
                  c.setBackground(Color.YELLOW); 
                  Font fonte = new Font("Book Antiqua", Font.BOLD ,20); 
                  c.setFont(fonte) ;
              }
     
              return c; 
           }
    Est-ce que ça fonctionne maintenant?

  6. #6
    Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 70
    Points : 52
    Points
    52
    Par défaut
    le x et y ??????

  7. #7
    Membre chevronné
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Points : 2 197
    Points
    2 197
    Par défaut
    x et y sont les numéros de ligne et colonne dont tu veux modifier la couleur, si le test n'est pas validé, ça prendre le renderer par défaut.

    Mais à toi de mettre le test à la forme que tu veux, si tu mets if(column == 1 && row ==1) ...etc seul le rendu de la case (1, 1) sera modifié.
    Tu peux mettre aussi if(column ==1) si tu veux appliquer ton rendu à toute une colonne.

  8. #8
    Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 70
    Points : 52
    Points
    52
    Par défaut
    Merci, ça marche mais juste pour la police(fonte) par contre le foreground et le background et appliqué a toute la colonne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    TableColumn cC = jCreditInFine_table.getColumnModel().getColumn(0);
    cC.setPreferredWidth(300);
    editeurCell edC=new editeurCell();
    cC.setCellRenderer(edC);
    je pense que comme le cC obtient la colonne(0) alors il applique tous sur elle

Discussions similaires

  1. [JTable] savoir si une cellule est selectionnée
    Par lipao17 dans le forum Composants
    Réponses: 10
    Dernier message: 27/05/2010, 16h44
  2. JTable : édition d'une cellule de type Date
    Par SheikYerbouti dans le forum Composants
    Réponses: 5
    Dernier message: 08/12/2007, 08h50
  3. jtable, combobox dans une cellule
    Par fraco dans le forum Composants
    Réponses: 8
    Dernier message: 27/10/2007, 11h20
  4. JTable : mettre à jour une cellule sans taper "enter"
    Par Copps dans le forum Composants
    Réponses: 9
    Dernier message: 21/08/2007, 17h34
  5. Réponses: 2
    Dernier message: 22/05/2006, 16h48

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