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] Fond de cellule couleur dégradée


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    574
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2004
    Messages : 574
    Par défaut [JTable] Fond de cellule couleur dégradée
    Salutation !

    Je suis actuellement entrain de découvrir les merveilles que l'on peut faire avec des JTable.
    Je en avoir un spécial qui permette d'ajouter des titres en column mais aussi en ligne et également un titre dans le coin supérieur gauche.
    Aussi, j'ai compris comment utiliser un table model et le Jtable pour me bricoler le tout.
    Cependant, voici mon problème. Car je m'y perd un peu.
    Je voudrais pourvoir afficher le fond des lignes alternativement gris dégradé / gris foncé dégradé.
    Mais je ne sais pas trop où partir. J'ai vu qu'il y avait une histoire de rendu de cellule mais je ne comprends pas vraiment comment faire?
    Pourriez vous me guidez vers les outils adéquates à utiliser.
    Merci d'avance et très bonne journée à vous !

  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
    Pour l'alternance de couleur, un début d'explication se trouve dans.... la javadoc
    Le Renderer est appelé via une méthode qui contient en paramètre entre autre le numéro de ligne. Il suffit calculer si ce numéro est pair ou impair pour coloré en gris clair ou foncé.
    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
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    574
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2004
    Messages : 574
    Par défaut
    En fait pour l'instant, j'ai l'impression qu'il y a peu être déjà un look and feel de défini qui fait cela.
    J'ai déjà les couleurs de mes lignes corectement mise.
    Cependant, je voudrais que la couleur soit dégradée...
    Je vais regarder du coté du Renderer...

  4. #4
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Août 2005
    Messages : 6 911
    Billets dans le blog
    54
    Par défaut
    Pour faire que le fond soit degrade il faut :
    - mettre le renderer en non-opaque.
    - surcharger sa methode paintComponent() comme a l'habitude. Peindre un gradient qui recouvre toute sa surface puis appeler super.paintComponent() (alors que generalement on fait l'ordre inverse).

    Sinon voir avec un JXLabel et un Painter a la place du DefaultTableCellRenderer habituel (aller voir ses sources dans src.zip pour piquer les methodes d'initialisation et de configuration du composant).

    EDIT - correction.
    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

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    574
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2004
    Messages : 574
    Par défaut
    J'ai trouvé quelque truc sur le net. Mais pour l'instant, c'est mon texte qui s'affichent en dégradé alors que je voudrais que ce soit le fond de mon label.
    Snif :
    Voici le code que j'utilise :
    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 MyLayeredPanel extends JLabel {
     
            public void paint(Graphics g){
              Graphics2D g2d = (Graphics2D)g;
              Color s1 = Color.red;
              Color e = Color.green;
              GradientPaint gradient = new GradientPaint(10,10,s1,30,30,e,true);
              g2d.setPaint(gradient);
              g2d.drawRect(100,100,200,120);
              Color s2 = Color.yellow;
              Color e1 = Color.pink;
              GradientPaint gradient1 = new GradientPaint(10,10,s2,30,30,e1,true);
              g2d.setPaint(gradient1);
              g2d.fillRect(99,99,199,119);
     
              g2d.drawString(getText(), 0, getFont().getSize());
            }
     
     
    }

  6. #6
    Membre Expert
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 052
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 052
    Par défaut
    Salut,

    Ne serait-ce pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public void paint(Graphics g){
              Graphics2D g2d = (Graphics2D)g;
              Color s2 = Color.yellow;
              Color e1 = Color.pink;
              GradientPaint gradient1 = new GradientPaint(10,10,s2,30,30,e1,true);
              g2d.setPaint(gradient1);
              g2d.fillRect(0,0,getWidth(),getHeight());
    }
    Cela fonctionnera avec un dégradé "bouclé" puisque tu dessine le dégradé cellule par cellule, mais si tu veux un dégradé qui s'exerce depuis le 0 jusqu'au bout de la table... cette méthode ne fonctionne plus.

Discussions similaires

  1. [FPDF] couleur de fond de cellule
    Par faucon54 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 30/09/2009, 10h47
  2. [VBA-E]Changement de couleur de fond de cellule avec si
    Par fmris dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 26/03/2007, 19h21
  3. Grouper selon couleur de fonds des cellules
    Par vinfranaur dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 16/08/2006, 10h02
  4. changer couleur fond de cellule à la selection checkbox
    Par khoudj dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 28/12/2005, 19h08
  5. [JTable] Problème avec la couleur de fond
    Par ellocin dans le forum Composants
    Réponses: 5
    Dernier message: 13/09/2005, 23h07

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