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 :

Colorier une ligne selon la valeur d'un champ


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2010
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 26
    Par défaut Colorier une ligne selon la valeur d'un champ
    Bonjour, je voudrais colorier une ligne celon la valeur d'un champ.
    J'ai donc fais ceci qui marche parfaitement:

    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
    public Component prepareRenderer(TableCellRenderer renderer, int row, int col) {
     
    					Component c2 =super.prepareRenderer(renderer, row, col);    
                Object value = getValueAt(row, 9);
                if ("NORMAL".equals(value)) {
                    c2.setForeground(Color.BLUE);
                } else if ("NORMAL HOLD - OTHER".equals(value)) {
                    c2.setForeground(Color.CYAN);
                } else if ("NORMAL HOLD - OOC".equals(value)) {
                    c2.setForeground(Color.ORANGE);
                } else {
                    c2.setForeground(Color.BLACK);
                }
     
                return c2;
    	}
    j'aimerais savoir si c'est possible d'au lieu de preciser la valeur du champ exact, de preciser seulement le debut.

    par exemple au lieu de preciser "NORMAL HOLD - OTHER", de mettre que NORMAL, et que toutes les lignes dont le champs commence par NORMAL soit colorié.

    Merci d'avance

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Tout est dans la javadoc : classe java.lang.String.
    Indice : le nom de la méthode que tu recherches commence par "starts".
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  3. #3
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 904
    Billets dans le blog
    54
    Par défaut
    Tu peux aussi utiliser la methode matches() qui elle fonctionne avec des expressions regulieres.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  4. #4
    Membre averti
    Inscrit en
    Février 2010
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 26
    Par défaut
    super merci pour l'indice !

  5. #5
    Membre averti
    Inscrit en
    Février 2010
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 26
    Par défaut
    Bonjour,

    je reviens à vous, pour une autre question
    J'ai bien réussit à colorier mes lignes mais j'aimerais ajouter un élément et je ne sais pas comment proceder.

    Enfaite je voudrais que lorsque je selectionne un lot dans ma liste deroulante la ligne se colorie.
    mais ma methode prepareRenderer n'est pas appelée quand je change de valeur dans ma liste.

    alors voila j'ai ma methode prepareRenderer la partie en rouge est ce qui ne marche pas:


    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
    public Component prepareRenderer(TableCellRenderer renderer, int row, int col) {
    			Component c2 = super.prepareRenderer(renderer, row, col);    
                String value = (String) getValueAt(row, 9);
                String value2= (String) getValueAt(row, 4);
                try {
    				if (ControleurPrincipal.choixLot(null).equals(value2)) {
    				    c2.setForeground(Color.ORANGE);
    				}
    			} catch (Exception e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}          //colorie une ligne sur 2
                Color[] colors = {new Color(224, 255, 255),new Color(255, 255, 240)};
        		Color color = getBackground();
        		int i;
        		if ( !isCellSelected(row, col)) {
        			color = colors[i=row % colors.length];
        		}
        		c2.setBackground(color);
        		//colorie les ligne celon le type du lot
                if ("NORMAL HOLD - OOC".equals(value)) {
                    c2.setForeground(Color.ORANGE);
                } else if ("NORMAL".equals(value)) {
                    c2.setForeground(Color.BLACK);
                }else if ("NORMAL HOLD - OTHER".equals(value)){
                	c2.setForeground(Color.BLACK);
                }else if (value.startsWith("DWR HOLD")){
                	c2.setForeground(Color.BLUE);
                }
                else {
                    c2.setForeground(Color.BLACK);
                }
                return c2;
    	}
    ma methode d'action sur ma liste deroulante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    	public static String choixLot(ActionEvent evt) throws Exception {
    		System.out.println("ActionListener : action sur " + Principal.cmbChoixLot.getSelectedItem());
    		String lot = (String) Principal.cmbChoixLot.getSelectedItem();		
    		return lot;
    	}

    Si quelqu'un pourrais m'indiquer comment proceder.
    merci par avance

  6. #6
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Tu devrais plutôt passer par ton propre CellRenderer et ton CellEditor.
    La méthode du CellRenderer te permet de savoir via un paramètre si la ligne est sélectionnée ou non.
    Le prepareRenderer est utilisé pour imprimer sans notion de focus ou de sélection.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

Discussions similaires

  1. Changer la couleur d une ligne selon la valeur d une cellule
    Par TGO2009 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 22/03/2014, 01h06
  2. Réponses: 4
    Dernier message: 23/05/2013, 00h07
  3. Réponses: 10
    Dernier message: 30/05/2011, 10h53
  4. [XL-2003] selectionner une ligne selon la valeur d'une cellule
    Par gcgp_67 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 13/05/2011, 13h41
  5. Trier une table selon la valeur d'un champ
    Par nandofive dans le forum Débuter
    Réponses: 4
    Dernier message: 23/11/2008, 08h18

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