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 :

Colorier cellule du tableau


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de biozaxx
    Profil pro
    Inscrit en
    Août 2004
    Messages
    403
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 403
    Par défaut
    donc ca marche ? tu as tes cases de couleur ?

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 23
    Par défaut
    Voila j ai mes case couleur voici le code utiliser :


    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
       class ColorTableCellRenderer extends JLabel implements TableCellRenderer
       { 
    	   private JPanel panel = new JPanel();
     
     
     
          public Component getTableCellRendererComponent(JTable table,
             Object value, boolean isSelected, boolean hasFocus,
             int row, int column)
          { 
        	  if (value instanceof Color) {
        		  panel.setBackground((Color)value);
        	  }
             return panel;
          }
       }



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    		jTable = new JTable(model);  // Creation de la table avec un model
    		jTable.setModel(model);
    		jTable.getColumnModel().getColumn(7).setCellRenderer(new ColorTableCellRenderer()); // le renderer ne s applique que a la colonne 7

    Le model du tableau pour le nombre de ligne et de 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
     
    public class MyModel extends DefaultTableModel{
    	   private static final long serialVersionUID = 8083956857937064934L;
     
     
     
    	    public int getColumnCount() {
    	        return 8;
    	    }
     
    	    public int getRowCount() {
    	        return 50;
    	    }
     
    	    public boolean isCellEditable(int row, int column) {
    	        // Aucune cellule éditable
    	        return false;
    	    } 
     
     
    	}

    Enfin la fonction qui rempli le model et donc les cellule 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
    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
     public void supervision()
    {
    	int taillesp=listsuperviser.size();
    	int col=0,nberreur=0; String nom=null;
     
     
     
    	for(int a=0;a<taillesp;a++) //chargement sur le tableau de la liste des postes supervisés
    	 {
    		 col=0;
    		 element =(CControle_agent_snmp)listsuperviser.get(a); //récuperation d'un objet de la liste situé a i
    		 if(element.lire_etat()!=-1) // mise a jour des informations de l'objet
    		 {
    			 model.setValueAt(element.getNom_poste(),a,col++); // Ajout des informations dans le tableau
    			 model.setValueAt(Float.toString(element.getTension_entree()),a,col++);
    			 model.setValueAt(Float.toString(element.getTension_sortie()),a,col++);
    			 model.setValueAt(Float.toString(element.getCourant_sortie()),a,col++);
    			 model.setValueAt(new Integer(element.getNiv_batterie()),a,col++);
     
    			 if(element.getMode()==1)
    				 nom="batterie";
    				 else
    			    nom="Secteur";
    			 model.setValueAt(nom,a,col++);
     
    			 if(element.getEtat()==1) 
    				 model.setValueAt("Actif",a,col++);
    			  else 
    				  model.setValueAt("Inactif",a,col++);
     
    			 detecter_evt(element,a,col); // methode de detection des erreurs     
     
    			switch(element.getEtat())
    			{
    			case 1: 
    			  {
    				model.setValueAt(Color.green,a,col);
    				break;
    			  }
    			case -1:
    			  {
    				model.setValueAt(Color.red,a,col);
    				break;
    			  }
    			}
     
    			element=null;          // mise a null de l'élement pour suppresion par le Garbage Collector
    		 }
    		 else 
    		 {	 
    			 col=0;                 // Affichage en cas de postes non joignable
    			 nberreur++;
    			 model.setValueAt(element.getNom_poste(),a,col++);
    			 model.setValueAt("INCONNU",a,col++);
    			 model.setValueAt("INCONNU",a,col++);
    			 model.setValueAt("INCONNU",a,col++);
    			 model.setValueAt("INCONNU",a,col++);
    			 model.setValueAt("Erreur",a,col++);
    			 model.setValueAt("INACTIF",a,col++);
    			 model.setValueAt(Color.blue,a,col);
    		 }}
    		if(nberreur==taillesp) // arret de la supervision si aucun des postes n'est atteignable
    			{
    				minuteur.stop();  				// arret minuteur
    				MIdesactive.setSelected(true);  
    	}}

    Un TRES GRAND MERCI A BIOZAXX pour son aide.

    Mais parce qu il y a un mais j ai un petit bug qui subsitent toujours, les cellules ce met bien a jour de meme pour la couleur mais :


    Exmple les cellue 1 a 4 ( colonne 7 ) sont bleu les autres cellule du tableau n'ont pas couleur (normale).
    Si le clic sur la cellule 10 (colonne7) toutes les cellules comprise entre 1 et 10 vont prendre la couleur bleu. Comment empecher ceci??

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 23
    Par défaut
    J ai trouver la solution la voici :

    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
       class ColorTableCellRenderer extends JLabel implements TableCellRenderer
       { 
    	   private JPanel panel = new JPanel();
    	   private CApplication rowsp;
     
    	   public ColorTableCellRenderer()
    	   {
    	     super();
    	     setOpaque(true);
    	   } 
     
          public Component getTableCellRendererComponent(JTable table,
             Object value, boolean isSelected, boolean hasFocus,
             int row, int column)
          { 
     
        	  if (value instanceof Color)
        	  {
        		  panel.setBackground((Color)value);
        	  }
        	  else 
        		  panel.setBackground(null);
             return panel;
          }
       }
    Merci a tous le monde

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Colorier Cellule / ligne sélectionnée dans JTable
    Par Sebou77 dans le forum Composants
    Réponses: 7
    Dernier message: 06/09/2006, 13h04
  2. faire disparaitre les contours d'une cellule de tableau
    Par moonia dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 06/04/2006, 13h27
  3. Réponses: 2
    Dernier message: 12/01/2006, 02h11
  4. Faire défiler un texte dans une cellule de tableau
    Par Furius dans le forum Général JavaScript
    Réponses: 18
    Dernier message: 01/12/2005, 18h06
  5. [HTML] largeur mini d'une cellule de tableau
    Par khayyam90 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 02/02/2005, 00h28

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