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 :

Colorer une ligne JTable selon une bdd


Sujet :

Composants Java

  1. #1
    Membre à l'essai
    Inscrit en
    Août 2009
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 20
    Points : 19
    Points
    19
    Par défaut Colorer une ligne JTable selon une bdd
    Bonjour,

    Je me retrouve coincé par un problème concernant la coloration de certaines lignes dans un JTable.

    Problème:
    Le programme contient une table JTable contenant les données d'une bdd.
    Il contient aussi des alertes définit par certaines conditions contenues dans des requêtes SQL.
    Exemple: SELECT * FROM something WHERE booleanColumn IS FALSE;
    Ainsi toutes lignes de la JTable pour lesquels la condition est vérifiée doivent s'afficher en rouge sachant que la colonne booleanColumn ne fait pas partit de la JTable.


    Après diverses recherches et tentatives je n'ai rien trouvé permettant de vraiment répondre à ce problème de manière efficace.

    Auriez vous une idée ?

    Merci d'avance

  2. #2
    Membre à l'essai
    Inscrit en
    Août 2009
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 20
    Points : 19
    Points
    19
    Par défaut
    J'ai finalement trouvé une solution.

    La voici si ça intéresse quelqu'un:

    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
    public class TableRenderer extends DefaultTableCellRenderer 
    {
    	private static final long serialVersionUID = 1L;
    	private JTable tempTable;
     
    	public TableRenderer(ConnectionTool connector, String tableName, String primary_key)
    	{
    		Object[][] datas;
    		String[] title = new String[]{"id", "boolean"};
    /*Effectue une requête SQL retournant un Object[][] (à adapter suivant la méthode de connection utilisée)*/		
                    datas = connector.getDb().pgSqlSelectQueryTable("Select "+primary_key+", boolean FROM "+tableName+" WHERE boolean = TRUE ORDER BY "+primary_key+"");
    		tempTable = new JTable(datas, title);
    	}
     
    	public TableRenderer(ConnectionTool connector, String query)
    	{
    		Object[][] datas;
    		String[] title = new String[]{"id", "boolean"};
     
    datas = connector.getDb().pgSqlSelectQueryTable(query);
    		tempTable = new JTable(datas, title);
    	}
     
    	public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) 
    	{													 
    		Component cell = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
     
    			for(int j=0; j<tempTable.getRowCount(); j++)
    			{
    				if(isSelected)
    				{
    					//Vérifie la correspondance des id entre les 2 tables
    					if(table.getValueAt(row, 0).toString().equals(tempTable.getValueAt(j, 0).toString()))
    					{				
    						cell.setBackground(new Color(20, 59, 119));//bleu
    						cell.setForeground(Color.white);
    						return cell;
    					}
    					else
    					{
    						cell.setBackground(table.getSelectionBackground());
    						cell.setForeground(table.getSelectionForeground());
    					}
    				}
    				else
    				{
     
    					if(table.getValueAt(row, 0).toString().equals(tempTable.getValueAt(j, 0).toString()))
    					{
    						System.out.println("Est confirmé");
    						cell.setBackground(new Color(101, 237, 71));//vert
    						return cell;
    					}			
    					else
    					{
    						cell.setBackground(table.getBackground());
    						cell.setForeground(table.getForeground());
    					}
    				}
    			}
    		return cell;
    	} 
    }

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 12/01/2015, 12h09
  2. Remonter le contenu d'une ligne non vide à une ligne vide
    Par sossso112333 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 27/08/2014, 12h58
  3. Réponses: 3
    Dernier message: 29/03/2011, 20h38
  4. copie d'une table Y d'une base A vers une table X d'une base
    Par moneyboss dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 30/08/2005, 21h24
  5. [JTable] Supprimer une ligne d'un jtable
    Par Orionmel dans le forum Composants
    Réponses: 5
    Dernier message: 05/11/2004, 22h29

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