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] Mettre en couleur une ligne de ma JTable


Sujet :

Composants Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 9
    Points : 11
    Points
    11
    Par défaut [Résolu] [JTable] Mettre en couleur une ligne de ma JTable
    Bonjour,
    j'aimerais mettre une ligne de ma JTable en couleur si un test est vérifié avec les valeurs de cette ligne... J'ai donc créé ceci :

    public class MyTableCellRenderer extends DefaultTableCellRenderer{
    public MyTableCellRenderer() {
    super();
    }

    public Component getTableCellRendererComponent(JTable table, Object value,boolean isSelected, boolean hasFocus, int row, int column) {
    return this;
    }

    public void setBackground(Color c){
    super.setBackground(c);
    }
    }

    J'aimerais donc ajouter ce Cell Renderer à ma table si une condition est remplie ... J'ai essayé de faire ceci :

    if (..... ma condition .... ) {
    DefaultTableCellRenderer myCellRenderer = new MyTableCellRenderer(); MyCellRenderer.setBackground(Color.RED);
    tableSrc.add(myCellRenderer);
    tableSrc.repaint();
    }

    Mais ceci ne semble pas fonctionner ... J'ai testé les paramètres de ma condition, et je passe bien dans mon if.

    Si quelqu'un pourrait m'aider ^^
    Cordialement
    Cedr

  2. #2
    Futur Membre du Club
    Inscrit en
    Mars 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    En fait un CellRenderer ne s'associe pas directement à une JTable mais à une colonne d'une Table.

    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    	JTable myTable;
    	TableColumn tc = myTable.getColumn("ColumnHeaderName");
    	tc.setCellRenderer(new MyCellRenderer());

  3. #3
    Membre averti Avatar de nicotine002
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 577
    Points : 409
    Points
    409
    Par défaut
    Bonjour, y a ce code là qui fonctionne trés bien:
    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 MyTableCellRenderer extends DefaultTableCellRenderer  {
     
       public MyTableCellRenderer() {
         super();
       }
     
       public Component getTableCellRendererComponent(JTable table,Object value, boolean isSelected, boolean hasFocus, int row, int column) {
     
          super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
     
          if(row == 2){
             setBackground(Color.red);
          }
          else {
      setBackground(table.getBackground());
    } 
     
          return this;
       }
    }

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 9
    Points : 11
    Points
    11
    Par défaut
    Merci pour vos réponses
    J'utilise à peu près ce que tu as marqué nicotine, sauf que je ne fais pas le super d'entrée de jeux dans la méthode getCellRendererComponent, mais je renvoie plutot ceci :
    return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);

    J'avais par la suite un problème d'instanciation de ma classe, car ma classe MyTableCellRenderer est une inner-class (qui appelle une méthode de ma classe englobante MyTable).
    Il fallait instancier la classe englobante pour faire un new de mon inner-class MyCellTableRenderer ... J'en profite pour vous donner cet exemple :

    public class MyClass {
    private JTable myTable = new JTable();

    public MyClass () {
    MyClass myClass = new MyClass();
    final TableCellRenderer renderer = myClass.new MyTableCellRenderer();
    myTable.setDefaultRenderer(Double.class,renderer);
    }

    public void myFunction () {}

    public class MyTableCellRenderer extends DefaultTableCellRenderer{

    public MyTableCellRenderer () {
    MyClass.this.myFunction();
    }
    }
    }

    Cordialement,
    Cedr

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/10/2013, 16h57
  2. [BO 6.1] Mettre en couleur une ligne sur 2
    Par nawal59 dans le forum Débuter
    Réponses: 4
    Dernier message: 07/08/2008, 08h37
  3. mettre en couleur une ligne gridview
    Par hermine dans le forum ASP.NET
    Réponses: 20
    Dernier message: 21/08/2007, 11h39
  4. [JTable] Supprimer une ligne d'un jtable
    Par Orionmel dans le forum Composants
    Réponses: 5
    Dernier message: 05/11/2004, 22h29
  5. Sélection d'une ligne dans un JTable
    Par dam21 dans le forum Composants
    Réponses: 3
    Dernier message: 28/07/2004, 12h57

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